Menu
CoddyTech

字面量类型

本课属于 Coddy JavaScript 学习旅程的“TypeScript 入门”单元。第 33 课,共 73 课。

字面量类型可以将变量限制为精确的特定值,而不是宽泛的类别。你可以不接受任意字符串,而是只允许 "left"、"right"、"up" 或 "down"。

字面量类型会将确切的值用作类型本身。

你可以为字符串、数字或布尔值创建字面量类型:

let direction: "left" = "left";  // Only "left" is allowed
let count: 42 = 42;              // Only the number 42 is allowed
let isReady: true = true;        // Only true is allowed

字面量类型与联合类型结合后会变得很强大,可以创建一组受控的允许值。这非常适合方向、状态码或配置选项等场景:

type Direction = "left" | "right" | "up" | "down";
type Status = "pending" | "approved" | "rejected";

let playerMove: Direction = "up";    // Valid
let orderStatus: Status = "pending"; // Valid
// let invalid: Direction = "diagonal"; // Error!

这种方法让你在保持严格类型安全的同时拥有多种选择。TypeScript 会在编译时捕获拼写错误和无效值,让你的代码比使用通用字符串类型更加可靠。

challenge icon

挑战

简单

为字面类型 "left" | "right" | "up" | "down" 创建一个名为 Direction 的类型别名。

为字面类型 "menu" | "playing" | "paused" | "gameover" 创建一个名为 GameState 的类型别名。

为字面类型 "easy" | "medium" | "hard" 创建一个名为 Difficulty 的类型别名。

现在,使用这些类型别名声明以下变量:

  • 声明一个名为 playerDirection、类型为 Direction 的变量,并将值 "up" 赋给它
  • 声明一个名为 currentState、类型为 GameState 的变量,并将值 "playing" 赋给它
  • 声明一个名为 selectedDifficulty、类型为 Difficulty 的变量,并将值 "medium" 赋给它

创建一个名为 movePlayer 的函数,它接受一个名为 direction、类型为 Direction 的参数,并返回一个 string。该函数应返回格式为 "Moving [direction]" 的消息。

再创建一个名为 updateGameState 的函数,它接受一个名为 state、类型为 GameState 的参数,并返回一个 string。该函数应返回格式为 "Game state: [state]" 的消息。

使用你创建的变量调用这些函数,并打印结果:

  • 使用 playerDirection 调用 movePlayer,并打印结果
  • 使用 currentState 调用 updateGameState,并打印结果
  • 打印 selectedDifficulty 的值

按照上述顺序,将每个结果单独打印在一行中。

亲手试试

// TODO:在这里编写你的代码
// 为 Direction、GameState 和 Difficulty 创建类型别名
// 使用你创建的类型别名声明变量
// 创建 movePlayer 和 updateGameState 函数
// 调用函数并打印结果
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

TypeScript 入门中的所有课

自己练习: TypeScript 在线编辑器