[!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,异常抛出,死循环函数