随笔 - 156  文章 - 0  评论 - 3  阅读 - 10万

TS — Symbol详解

symbol 是 TypeScript 中的基本数据类型之一,用于表示唯一的标识符。每个通过 Symbol() 构造函数创建的 symbol 值都是独一无二的,并且不可变。

1.创建 symbol:

可以使用 Symbol() 构造函数来创建一个新的 symbol 值:

let sym1 = Symbol();
let sym2 = Symbol("key");

sym1sym2 都是通过 Symbol() 构造函数创建的 symbol 值。如果给 Symbol() 传递一个字符串参数,它将作为 symbol 的描述(可选)。

2.唯一性和不可变性:

每个 symbol 值都是唯一的,即使创建时使用相同的描述:

let sym1 = Symbol("key");
let sym2 = Symbol("key");
console.log(sym1 === sym2); // 输出: false

sym1sym2 的描述相同,但它们是不同的 symbol 值,因此比较它们会返回 falsesymbol 值是不可变的,不能被修改或重置。

3.作为对象属性的键:

symbol 值通常用作对象属性的键,由于每个 symbol 值都是唯一的,可以确保属性名不会与其他属性冲突:

const sym = Symbol();
let obj = {
  [sym]: "value"
};

console.log(obj[sym]); // 输出: "value"

使用 symbol 值作为属性的键,可以通过 obj[sym] 来访问该属性的值。

4.系统内置的 symbol:

TypeScript 提供了一些内置的 symbol 值,称为系统内置 symbol。这些 symbol 具有特殊的含义,用于自定义对象的行为:

  • Symbol.iterator: 表示对象是可迭代的。
  • Symbol.asyncIterator: 表示对象是可异步迭代的。
  • Symbol.hasInstance: 用于自定义对象的 instanceof 操作。
  • Symbol.toStringTag: 用于自定义对象的默认字符串描述。

这些系统内置 symbol 可以在对象上进行访问和使用,以实现特定的行为定制。

symbol 类型在 JavaScript 中引入了一种新的标识符机制,用于避免属性名冲突并提供独特性。它在 TypeScript 中被广泛应用于对象属性的键、自定义行为的定义等方面。

posted on   萬事順意  阅读(424)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示