TypeScript类型系统基础——枚举类型
枚举类型由零个或多个枚举成员构成,每个枚举成员都是一个命名的常量。
在 TypeScript 中,枚举类型是一种原始类型,它通过 enum 关键字来定义。例如,我们可以使用枚举类型来表示一年四季,示例如下:
enum Season{ Spring, Summer, Fall, Winter, }
按照枚举成员的类型可以将枚举类型划分为以下三类:
- 数值型枚举
- 字符串枚举
- 异构性枚举
1、数值型枚举
数值型枚举是最常用的枚举类型,是 number 类型的子类型,它由一组命名的数值常量构成。定义数值型枚举的方法如下所示:
enum Direction { Up, Dwon, Left, Right } const direction: Direction = Direction.up;
此示例中,我们使用 enum 关键字定义了枚举类型 Direction,它包含了四个枚举成员 Up、Down、Left 和 Right。在使用枚举成员时,可以像访问对象属性一样访问枚举成员。
如果想要为枚举成员设置初始值,可以直接在成员名称后面赋值。例如,让 Up
的值为 1,其它成员的值依次递增:
enum Direction {
Up = 1,
Down,
Left,
Right
}
在这个例子中,Up
的值是 1,Down
的值是 2,Left
的值是 3,Right
的值是 4。
代码示例是一个 TypeScript 的数值型枚举。在这个示例中,Up 的值被显式设置为 1,Down 的值会自动递增为 2。然后,Left 的值被显式设置为 10,Right 的值会自动递增为 11,所以在这个例子中,各个枚举成员的值如下:
-
Up
: 1Down
: 2Left
: 10Right
: 11
这种自动递增的特性使得枚举在需要一组相关常量时非常方便。同时,你也可以为特定的枚举成员设置特定的值。
2、字符串枚举
enum Direction {
Up = "UP",
Down = "DOWN",
Left = "LEFT",
Right = "RIGHT"
}
在这个例子中,Up
的值是 "UP",Down
的值是 "DOWN",Left
的值是 "LEFT",Right
的值是 "RIGHT"。每个枚举成员的值都是显式指定的字符串字面量。
与数值型枚举不同,字符串枚举成员的值不会递增。这是因为字符串枚举成员的值是字符串类型,而不是数字类型。因此,每个成员的值都必须显式指定。
字符串枚举是 string 类型的子类型,因此允许将字符串枚举类型赋值给 string 类型。例如,下列中常量 direction 为 string 类型,可以使用字符串枚举 Direction 来初始化 direction 常量: