TypeScript 解释符号类型
在TypeScript中,符号是一种原始数据类型。原始数据类型不是对象,它没有属性或方法,也无法被改变。符号类型类似于其他类型,如数字、字符串、布尔等。符号值是使用Symbol构造函数创建的。
语法: 以下是创建符号值的语法:
Symbol() // OR
Symbol("string")
示例1:创建符号
使用符号构造函数直接创建符号,或者通过使用可选键来创建。我们创建了一个普通符号和一个带有可选键“abc”的符号。
Javascript
<script>
// Creating a symbol normally
let symbol1 = Symbol();
console.log(symbol1);
// Creating a symbol with an optional key
let symbol2 = Symbol("abc");
console.log(symbol2);
</script>
输出:
Symbol()
Symbol(abc)
示例2:每个符号都是唯一的
每个符号都是唯一的。下面的代码检查两个符号是否相同,但由于我们比较的是两个符号,所以返回值为false。
JavaScript
<script>
// Creating a symbol
let symbol1 = Symbol();
// Creating a symbol with an optional key
let symbol2 = Symbol("abc");
console.log(symbol1 == symbol2);
console.log(symbol1 === symbol2);
</script>
输出:
false
false
示例3:符号作为对象属性的键
由于符号是唯一的,因此可以用作对象属性的键。
JavaScript
<script>
let symbol1 = Symbol();
let obj1 = {
symbol1: "secret_code",
};
console.log(obj1.symbol1);
</script>
输出:
secret_code
示例4:用于声明类成员或类方法的符号
在这个示例中,使用符号声明了一个类成员。该方法返回类的名称。我们通过创建一个对象并访问该方法来调用该类。
JavaScript
<script>
let symbol1 = Symbol();
class SymbolClass {
symbol1() {
return "SymbolClass";
}
}
let obj = new SymbolClass();
let className = obj.symbol1();
console.log(className);
</script>
输出:
SymbolClass
示例5:将符号作为唯一文字
通常,符号只被视为一种类型。为了将符号作为唯一的文字处理,TypeScript拥有一种特殊的类型称为“unique symbol”。它是Symbol()的子类型。唯一的符号只能与那些被声明为const或只读属性的变量一起使用。如果我们想要引用一个唯一符号类型的变量,我们需要使用typeof运算符。
JavaScript
let symbol1: unique symbol = Symbol();
输出:
'Symbol' only refers to a type, but is being used
as a value here. Do you need to change your
target library?
Try changing the 'lib' compiler option to es2015 or later.
唯一类型变量必须是const。正确的声明如下所示:
declare const symbol1: unique symbol;
参考: https://www.typescriptlang.org/docs/handbook/symbols.html