TypeScript入门到精通——TypeScript类型系统基础——字面量类型
字面量类型
TypeScript 支持将字面量作为类型使用,我们称之为字面量类型。每一个字面量类型都只有一个可能的值,即字面量本身。
1、boolean 字面量类型
boolean 字面量类型只有以下两种:
-
- true 字面量类型
- false 字面量类型
原始类型 boolean 等同于由 true 字面量类型和 false 字面量类型构成的联合类型,即:
true 字面量类型只能接受 true 值;同理,false 字面量类型只能接受 false 值,示例如下:
const a: true = true; const b: false = false;
boolean 字面量类型是 boolean 类型的子类型,因此可以将 boolean 字面量类型赋值给 boolean 类型,示例如下:
const a: true = true const b: false = false let c: boolean; c = a; c = b;
2、string 字面量类型
字符串字面量和模版字面量都能够创建字符串。字符串字面量和不带参数的模版字面量可以作为 string 字面量类型使用。示例如下:
在 TypeScript 中,字符串字面量和模版字面量都可以用来创建字符串。字符串字面量是指用双引号或单引号包围的文本,而模版字面量则是使用反引号包围的文本,可以包含嵌入的表达式。
以下是一个示例,展示了如何使用字符串字面量和模版字面量来创建字符串,并将它们赋值给变量:
// 字符串字面量
const str1: string = "Hello, world!";
// 模版字面量
const name = "TypeScript";
const str2: string = `Hello, ${name}!`;
在这个例子中,str1 是一个字符串字面量,它的值是 "Hello, world!"。str2 是一个模版字面量,它的值是 "Hello, TypeScript!",其中 ${name} 是一个嵌入的表达式,会被替换为变量 name 的值。
需要注意的是,字符串字面量和不带参数的模版字面量都可以作为 string 字面量类型使用。这意味着你可以将它们赋值给类型为 string 的变量,或者在类型注解中使用它们来表示 string 类型。然而,带参数的模版字面量不能被当作 string 字面量类型使用,因为它们的值是在运行时计算的。
3、数字字面量类型
数字字面量类型是指用数字表示的具体数值类型。在TypeScript中,可以使用数字字面量来定义变量或参数的类型,以确保它们的值等于指定的数字。
以下是一个数字字面量类型的示例:
const num: 5 = 5;
在这个例子中,变量 num
的类型被指定为数字字面量类型 5
,这意味着它的值必须等于 5
。尝试将其他数值赋值给 num
将会导致类型错误。
4、枚举成员字面量类型
枚举成员字面量类型是指枚举成员的具体值类型。在 TypeScript 中,可以使用枚举成员字面量类型来限制变量或参数的值等于某个枚举成员的值。
以下是一个枚举成员字面量类型的示例:
enum Direction { Up, Down, Left, Right } const d: Direction.Up = Direction.Up;
在这个例子中,枚举Direction
包含了四个成员:Up
、Down
、Left
和Right
。变量d
的类型被指定为枚举成员字面量类型Direction.Up
,这意味着它的值必须等于Direction.Up
的值。尝试将其他枚举成员的值赋值给d
将会导致类型错误。
需要注意的是,数字字面量类型和枚举成员字面量类型都是具体的值类型,只能用于限定变量或参数的值,而不能用于表示一般的数字或枚举类型。