TypeScript入门与实战
上QQ阅读APP看书,第一时间看更新

5.4.3 异构型枚举

TypeScript允许在一个枚举中同时定义数值型枚举成员和字符串枚举成员,我们将这种类型的枚举称作异构型枚举。异构型枚举在实际代码中很少被使用,虽然在语法上允许定义异构型枚举,但是不推荐在代码中使用异构型枚举。我们可以尝试使用对象来代替异构型枚举。

下例中定义了一个简单的异构型枚举:


01 enum Color {
02     Black = 0,
03     White = 'White',
04 }

在定义异构型枚举时,不允许使用计算的值作为枚举成员的初始值。示例如下:


01 enum Color {
02     Black = 0 + 0,
03     //      ~~~~~
04     //      编译错误!在带有字符串成员的枚举中不允许使用计算值
05 
06     White = 'White',
07 }

在异构型枚举中,必须为紧跟在字符串枚举成员之后的数值型枚举成员指定一个初始值。下例中,ColorA枚举的定义是正确的,但是ColorB枚举的定义是错误的,必须为数值型枚举成员Black指定一个初始值。示例如下:


01 enum ColorA {
02     Black,
03     White = 'White',
04 }
05 
06 enum ColorB {
07     White = 'White',
08     Black,
09 //  ~~~~~
10 //  编译错误!枚举成员必须有一个初始值
11 }