字面量类型

概述

在 TypeScript 中,字面量类型(Literal Types)是一种特殊的类型,它允许你将变量的值限制为特定的字面量值。字面量类型可以是字符串、数字、布尔值等。通过使用字面量类型,你可以更精确地控制变量的取值范围,从而提高代码的类型安全性。

字符串字面量类型

理论解释

字符串字面量类型允许你将变量的值限制为特定的字符串。例如,你可以定义一个变量只能取值为 "success" 或 "error"。

代码示例

let status: "success" | "error";

status = "success"; // 合法
status = "error";   // 合法
// status = "pending"; // 错误: Type '"pending"' is not assignable to type '"success" | "error"'.

实践练习

  1. 创建一个变量 direction,其类型为 "left" | "right" | "up" | "down"。
  2. 尝试为 direction 赋值 "left"、"right"、"up"、"down" 以外的值,观察 TypeScript 的类型检查。

数字字面量类型

理论解释

数字字面量类型允许你将变量的值限制为特定的数字。例如,你可以定义一个变量只能取值为 1、2 或 3。

代码示例

let level: 1 | 2 | 3;

level = 1; // 合法
level = 2; // 合法
level = 3; // 合法
// level = 4; // 错误: Type '4' is not assignable to type '1 | 2 | 3'.

实践练习

  1. 创建一个变量 score,其类型为 0 | 1 | 2 | 3。
  2. 尝试为 score 赋值 0、1、2、3 以外的值,观察 TypeScript 的类型检查。

布尔字面量类型

理论解释

布尔字面量类型允许你将变量的值限制为 true 或 false。

代码示例

let isActive: true | false;

isActive = true;  // 合法
isActive = false; // 合法
// isActive = 1; // 错误: Type '1' is not assignable to type 'true | false'.

实践练习

  1. 创建一个变量 isLoggedIn,其类型为 true | false。
  2. 尝试为 isLoggedIn 赋值 true 或 false 以外的值,观察 TypeScript 的类型检查。

联合字面量类型

理论解释

联合字面量类型允许你将变量的值限制为多个字面量类型的组合。例如,你可以定义一个变量只能取值为 "red"、"green"、1 或 2。

代码示例

let value: "red" | "green" | 1 | 2;

value = "red"; // 合法
value = "green"; // 合法
value = 1; // 合法
value = 2; // 合法
// value = "blue"; // 错误: Type '"blue"' is not assignable to type '"red" | "green" | 1 | 2'.
// value = 3; // 错误: Type '3' is not assignable to type '"red" | "green" | 1 | 2'.

实践练习

  1. 创建一个变量 result,其类型为 "pass" | "fail" | 0 | 1。
  2. 尝试为 result 赋值 "pass"、"fail"、0、1 以外的值,观察 TypeScript 的类型检查。

字面量类型与类型推断

理论解释

TypeScript 的类型推断系统能够自动推断出字面量类型。例如,当你将一个变量初始化为特定的字符串或数字时,TypeScript 会自动推断该变量的类型为相应的字面量类型。

代码示例

let message = "Hello, TypeScript!"; // 推断为字符串字面量类型 "Hello, TypeScript!"

// message = "Hi"; // 错误: Type '"Hi"' is not assignable to type '"Hello, TypeScript!"'.

实践练习

  1. 创建一个变量 initialValue,并将其初始化为 42。
  2. 尝试为 initialValue 赋值 42 以外的值,观察 TypeScript 的类型检查。

总结

字面量类型是 TypeScript 中一种强大的类型系统特性,它允许你将变量的值限制为特定的字面量值,从而提高代码的类型安全性。通过字符串、数字和布尔字面量类型,你可以更精确地控制变量的取值范围。联合字面量类型则允许你将变量的值限制为多个字面量类型的组合。TypeScript 的类型推断系统能够自动推断出字面量类型,进一步简化了代码的编写。

通过本教程的学习,你应该能够理解并应用字面量类型来增强你的 TypeScript 代码的类型安全性。