枚举类型
在 TypeScript 中,枚举类型是一种特殊的类型,允许您为一组相关的值赋予友好的名字。它常用于表示数字常量。
定义枚举类型
在 TypeScript 中,使用 enum 关键字定义枚举类型。
enum Direction {
Up,
Down,
Left,
Right
}
在这个例子中,Direction 是一个枚举类型,包含四个值:Up、Down、Left 和 Right。这些值默认映射到数字,Up 映射到 0,Down 映射到 1,Left 映射到 2,Right 映射到 3。
枚举值的数字映射
可以通过在枚举值后面添加数字来指定映射值。
enum Direction {
Up = 1,
Down,
Left,
Right
}
在这个例子中,Up 映射到 1,Down 映射到 2,Left 映射到 3,Right 映射到 4。
枚举值的字符串映射
枚举类型默认是数字映射,但也可以定义为字符串映射。
enum Color {
Red = "RED",
Green,
Blue
}
在这个例子中,Color 是一个字符串枚举类型,Red 映射到 "RED",Green 映射到 "GREEN",Blue 映射到 "BLUE"。
使用枚举类型
枚举类型可以用作变量的类型。
let direction: Direction;
direction = Direction.Up;
在这个例子中,direction 是一个 Direction 类型的变量,并赋值为 Direction.Up。
常量枚举
常量枚举(const enum)是一种特殊的枚举类型,其枚举值在编译时就会被优化掉,不会产生额外的运行时成本。
定义常量枚举
在 TypeScript 中,使用 const enum 关键字定义常量枚举类型。
const enum Direction {
Up,
Down,
Left,
Right
}
在这个例子中,Direction 是一个常量枚举类型,包含四个值:Up、Down、Left 和 Right。
使用常量枚举
常量枚举类型可以用作变量的类型,但变量只能被赋值为枚举值,而不能被赋值为枚举值对应的数字。
let direction: Direction;
direction = Direction.Up; // 正确
direction = 1; // 错误
在这个例子中,direction 是一个 Direction 类型的变量,并赋值为 Direction.Up。尝试将 direction 赋值为 1 会导致编译错误。
编译结果
常量枚举在编译时会被优化掉,不会生成额外的运行时代码。
// 编译结果
let direction = 0; // Up
在这个例子中,direction 编译后变成了 0,表示 Direction.Up。
常量枚举类型是一种优化手段,用于在编译时删除不必要的运行时开销,适用于那些不需要在运行时访问的枚举值。
上一章:映射类型与条件类型应用 下一章:字面量类型与索引签名