首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用延迟初始化将符号定义为属性

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

Stack Overflow用户
提问于 2018-05-05 04:46:40
回答 1查看 489关注 0票数 2

我有这个:

代码语言:javascript
复制
export const symbols = {
  toString: Symbol('@xml.js.toString')
};

export class Node {

  [key: string]: any;

  [symbols.toString] = function(){

  };

}

但我知道这个错误:

即:

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

有人知道怎么回事吗?

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-05 08:16:36

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

正如参考文献中所描述的,

要将符号视为唯一文字,可以使用新类型的唯一符号。唯一符号是符号的子类型,仅由调用符号()或Symbol.for()或显式类型注释产生。新类型只允许在const声明和只读静态属性上使用,为了引用特定的唯一符号,您必须使用type on操作符。每个对唯一符号的引用都意味着一个与给定声明相关联的完全唯一的身份。

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

相反,它可以是:

代码语言:javascript
复制
export namespace symbols {
  export const toString = Symbol('@xml.js.toString');
};
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50185792

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档