枚举
枚举是 typeScript 中一种特殊的数据类型,允许我们为一组数值设定友好的名字。枚举的定义使用 enum
关键字。
enum Direction {
Up = 1,
Down,
Left,
Right,
}
在这个例子中,我们定义了一个名为 Direction
的枚举,它有四个成员:Up
、Down
、Left
和 Right
。Up
的初始值为 1,其余成员的值会自动递增。
除了使用数值,我们也可以使用字符串:
enum Direction {
Up = "UP",
Down = "DOWN",
Left = "LEFT",
Right = "RIGHT",
}
此外,TypeScript 还支持计算的和常量成员。常量枚举通过 const enum
进行定义,TypeScript 会在编译阶段进行优化:
const enum Enum {
A = 1,
B = A * 2
}
异构枚举
TypeScript 支持数字和字符串混用的枚举,这种类型的枚举被称为异构枚举:
enum BooleanLikeHeterogeneousEnum {
No = 0,
Yes = "YES",
}
尽管 TypeScript 支持这种用法,但我们在实际项目中应尽可能避免使用异构枚举,因为这会引入不必要的复杂性。
枚举成员的类型
在某些特殊的情况下,枚举成员本身也可以作为一种类型:
enum ShapeKind {
Circle,
Square,
}
interface Circle {
kind: ShapeKind.Circle;
radius: number;
}
interface Square {
kind: ShapeKind.Square;
sideLength: number;
}