字面量类型
本课属于 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 会在编译时捕获拼写错误和无效值,让你的代码比使用通用字符串类型更加可靠。
挑战
简单为字面类型 "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 函数
// 调用函数并打印结果这节课包含一个小测验。开始学习即可作答,并记录你的进度。
TypeScript 入门中的所有课
自己练习: TypeScript 在线编辑器