TypeScript学习笔记(八)Symbols

142 阅读1分钟

Symbols

自ECMAScript 2015起,symbol成为了一种新的原生类型,它表示不可改变且独一无二的值。

js 的数据类型

值类型(基本类型):字符串(String)、数字(Number)、布尔(Boolean)、对空(Null)、未定义(Undefined)、Symbol。 引用数据类型:对象(Object)、数组(Array)、函数(Function)。

需要注意的是: typeof null 的值是 Object, typeof console.log() 的值是 Function

Symbol 介绍

// 创建方式
let sym1 = Symbol();
let sym2 = Symbol("key"); // 可选的字符串key 
let sym3 = Symbol("key"); // 可选的字符串key

sym2 === sym3; // false, symbols是唯一的

像字符串一样,symbols也可以被用做对象属性的键。

let sym = Symbol();

let obj = {
    [sym]: "value"
};

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

Symbols也可以被用来声明对象的属性和类成员。

const getClassNameSymbol = Symbol();

class C {
    [getClassNameSymbol](){
       return "C";
    }
}

let c = new C();
let className = c[getClassNameSymbol](); // "C"