答案 0 :(得分:7)
从TypeScript 2.7开始,有unique symbol
类型,用于允许将符号用作唯一文字。相关文档为here,@ TitianCernicovaDragomir链接了引入此功能的相关pull request。
至于为什么它在Playground中是蓝色的,我猜它的颜色不是最好的,只是突出显示任何特殊的单词,即使它没有在特殊的上下文中使用。 (我无法找到关于它的相关GitHub issue;也许有人应该提交一个?)。它绝对是一个有效的标识符,并且发出的JavaScript是正确的。 VSCode似乎没有这个问题:
比较Playground weird colorizing:
到VSCode预期的着色:
好吧,好吧。希望有所帮助;祝你好运!答案 1 :(得分:3)
这可以与符号一起使用。来自release notes:
要将符号视为唯一文字,可以使用新类型
unique symbol
。unique symbol
是symbol
的子类型,仅通过调用Symbol()
或Symbol.for()
或显式类型注释生成。新类型仅允许在const
声明和readonly static
属性上,并且为了引用特定的唯一符号,您必须使用typeof
运算符。每个对unique symbol
的引用都意味着一个与给定声明相关的完全唯一的身份。
// Works
declare const Foo: unique symbol;
// Error! 'Bar' isn't a constant.
let Bar: unique symbol = Symbol();
// Works - refers to a unique symbol, but its identity is tied to 'Foo'.
let Baz: typeof Foo = Foo;
// Also works.
class C {
static readonly StaticSymbol: unique symbol = Symbol();
}