上QQ阅读APP看书,第一时间看更新
5.4.1 数值型枚举
数值型枚举是最常用的枚举类型,是number类型的子类型,它由一组命名的数值常量构成。定义数值型枚举的方法如下所示:
01 enum Direction { 02 Up, 03 Down, 04 Left, 05 Right 06 } 07 08 const direction: Direction = Direction.Up;
此例中,我们使用enum关键字定义了枚举类型Direction,它包含了四个枚举成员Up、Down、Left和Right。在使用枚举成员时,可以像访问对象属性一样访问枚举成员。
每个数值型枚举成员都表示一个具体的数字。如果在定义枚举时没有设置枚举成员的值,那么TypeScript将自动计算枚举成员的值。根据TypeScript语言的规则,第一个枚举成员的值为0,其后每个枚举成员的值等于前一个枚举成员的值加1。因此,Direction枚举中Up的值为0、Down的值为1,以此类推。示例如下:
01 enum Direction { 02 Up, // 0 03 Down, // 1 04 Left, // 2 05 Right, // 3 06 }
在定义数值型枚举时,可以为一个或多个枚举成员设置初始值。对于未指定初始值的枚举成员,其值为前一个枚举成员的值加1。在5.4.5节中将详细介绍枚举成员的计算规则。示例如下:
01 enum Direction { 02 Up = 1, // 1 03 Down, // 2 04 Left = 10, // 10 05 Right, // 11 06 }
前文提到,数值型枚举是number类型的子类型,因此允许将数值型枚举类型赋值给number类型。例如,下例中常量direction为number类型,可以使用数值型枚举Direction来初始化direction常量。示例如下:
01 enum Direction { 02 Up, 03 Down, 04 Left, 05 Right 06 } 07 08 const direction: number = Direction.Up;
需要注意的是,number类型也能够赋值给枚举类型,即使number类型的值不在枚举成员值的列表中也不会产生错误。示例如下:
01 enum Direction { 02 Up, 03 Down, 04 Left, 05 Right, 06 } 07 08 const d1: Direction = 0; // Direction.Up 09 const d2: Direction = 10; // 不会产生错误