在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])来访问它。