TypeScript,字面量类型(Iiteral)

在 TypeScript 中,字面量类型是一种特殊的类型,它表示一个具体的值。字面量类型可以用于约束变量、函数参数或对象属性的取值范围,使得代码更加明确和类型安全。

以下是字面量类型的主要用法和示例:

1. 字符串字面量类型:

let status: "success" | "error";
status = "success"; // 合法
// status = "failure"; // 错误,因为只能是 "success" 或 "error"

这里 status 的类型是字符串字面量类型,只能取 "success" 或 "error" 中的一个值。

2. 数字字面量类型:

let numberLiteral: 42 | 87;
numberLiteral = 42; // 合法
// numberLiteral = 10; // 错误,因为只能是 42 或 87

numberLiteral 的类型是数字字面量类型,只能取 42 或 87 中的一个值。

3. 布尔字面量类型:

let truthyOrFalsy: true | false;
truthyOrFalsy = true; // 合法
// truthyOrFalsy = false; // 合法
// truthyOrFalsy = 0; // 错误,因为只能是 true 或 false

truthyOrFalsy 的类型是布尔字面量类型,只能取 true 或 false 中的一个值。

4. 联合字面量类型:

type Gender = "male" | "female";
let userGender: Gender;
userGender = "male"; // 合法
// userGender = "other"; // 错误,因为只能是 "male" 或 "female"

在类型别名中使用字面量类型,可以将多个字面量类型联合起来,形成更复杂的类型。

5. 对象字面量类型:

type Point = { x: 10, y: 20 };
let fixedPoint: Point;
fixedPoint = { x: 10, y: 20 }; // 合法
// fixedPoint = { x: 5, y: 15 }; // 错误,因为只能是 { x: 10, y: 20 }

在对象字面量类型中,可以指定每个属性的确切值。

字面量类型可以在许多场景中提供更严格的类型检查,确保代码的正确性。在实际应用中,字面量类型常常与联合类型和类型别名结合使用,以创建更复杂和精确的类型定义。