在TypeScript(和JavaScript)中,Symbol
是一个内置对象,它提供了一个唯一的且不可改变的数据类型,用于作为对象的键(key)。这种类型主要用于避免命名冲突,特别是在使用像 for...in
或对象字面量扩展等可能导致属性名冲突的情况下。
在你给出的代码片段中:
typescript
const sym1:symbol = Symbol();
这里做了几件事:
- 使用
Symbol()
创建了一个新的、唯一的symbol
值。 - 声明了一个常量
sym1
,并使用symbol
类型注解来指定其类型。 - 将新创建的
symbol
值赋给sym1
。
由于 Symbol()
每次被调用时都会返回一个新的、唯一的 symbol
值,所以 sym1
会持有一个与其他任何 symbol
值都不同的值。
这个 symbol
值可以用作对象的属性键,例如:
typescript
|
注意,你不能使用点表示法(如 obj.sym1
)来访问这个属性,因为 sym1
是一个 symbol
,而不是一个字符串字面量。你必须使用方括号表示法(如 obj[sym1]
)来访问它。