5.4.2 字符串枚举

字符串枚举与数值型枚举相似。在字符串枚举中,枚举成员的值为字符串。字符串枚举成员必须使用字符串字面量或另一个字符串枚举成员来初始化。字符串枚举成员没有自增长的行为。示例如下:


01 enum Direction {
02     Up = 'UP',
03     Down = 'DOWN',
04     Left = 'LEFT',
05     Right = 'RIGHT',
06 
07     U = Up,
08     D = Down,
09     L = Left,
10     R = Right,
11 }

字符串枚举是string类型的子类型,因此允许将字符串枚举类型赋值给string类型。例如,下例中常量direction为string类型,可以使用字符串枚举Direction来初始化direction常量:


01 enum Direction {
02     Up = 'UP',
03     Down = 'DOWN',
04     Left = 'LEFT',
05     Right = 'RIGHT',
06 }
07 
08 const direction: string = Direction.Up;

但是反过来,不允许将string类型赋值给字符串枚举类型,这一点与数值型枚举是不同的。例如,下例中将字符串“'UP'”赋值给字符串枚举类型的常量direction将产生编译错误:


01 enum Direction {
02     Up = 'UP',
03     Down = 'DOWN',
04     Left = 'LEFT',
05     Right = 'RIGHT',
06 }
07 
08 const direction: Direction = 'UP';
09 //    ~~~~~~~~~
10 //    编译错误!类型 'UP' 不能赋值给类型 'Direction'