繁体   English   中英

使用延迟初始化将符号定义为属性

[英]Define symbol as property using lazy initialization

我有这个:

export const symbols = {
  toString: Symbol('@xml.js.toString')
};

export class Node {

  [key: string]: any;

  [symbols.toString] = function(){

  };

}

但是我得到这个错误:

在此处输入图片说明

这是:

类属性声明中的计算属性名称必须引用其类型为文字类型或唯一符号类型的表达式。

有人知道发生了什么吗?

如果将其放在构造函数中,不会出现错误:

在此处输入图片说明

作为错误状态,只能将唯一符号用作计算的属性名称。

参考资料所述

为了能够将符号视为唯一文字,可以使用一种新型的唯一符号。 唯一符号是符号的子类型,并且仅通过调用Symbol()或Symbol.for()或显式类型注释生成。 仅在const声明和只读静态属性上才允许使用新类型,并且为了引用特定的唯一符号,您必须使用typeof运算符。 每个对唯一符号的引用都意味着与给定声明相关联的完全唯一的标识。

由于列出的限制,对象属性不能唯一。

相反,它可以是:

export namespace symbols {
  export const toString = Symbol('@xml.js.toString');
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM