Skip to content

[!info] ES6 的数据类型

  • Boolean
  • Number
  • String
  • Array
  • Function
  • Object
  • Symbol
  • undefined
  • null

[!warning] TS 新增的数据类型

  • void
  • any
  • never
  • 元组
  • 枚举
  • 高级类型

数组

泛型

联合类型

元组,特殊的数组,类型和个数受限制

symbol,是什么东西?

Symbol 是 ES6 新增的一种原始数据类型,用于表示唯一的、不可变的值。Symbol 值通过 Symbol 函数创建,每个 Symbol 值都是唯一的,可以用作对象属性的键名,保证不会与其他属性名冲突。

Symbol 值可以作为对象的属性名,但是不能使用点运算符访问,必须使用方括号运算符。另外,Symbol 值也可以用于定义对象的私有属性,这些属性不会被遍历到,也不会被意外覆盖。

例如:

javascript
const sym = Symbol('foo');
const obj = {
  [sym]: 'bar'
};
console.log(obj[sym]); // 输出: "bar"
const sym = Symbol('foo');
const obj = {
  [sym]: 'bar'
};
console.log(obj[sym]); // 输出: "bar"

Symbol 值还有一个重要的特点,就是可以用于定义对象的迭代器,通过定义 Symbol.iterator 方法,可以使对象具备可迭代性,可以使用 for...of 循环遍历。

例如:

javascript
const obj = {
  [Symbol.iterator]: function* () {
    yield 1;
    yield 2;
    yield 3;
  }
};

for (const value of obj) {
  console.log(value); // 输出: 1 2 3
}
const obj = {
  [Symbol.iterator]: function* () {
    yield 1;
    yield 2;
    yield 3;
  }
};

for (const value of obj) {
  console.log(value); // 输出: 1 2 3
}

总之,Symbol 是一种非常有用的数据类型,可以用于定义唯一的属性名或迭代器,为 JavaScript 提供更加灵活的编程方式。

void 0
undefined 非保留字,会被覆盖 函数自执行 ()

never,异常抛出,死循环函数