TypeScript 枚举(enum)

1、枚举简介

枚举是一个被命名的整型常数的集合,枚举在日常生活中很常见,例如表示星期的SUNDAY、MONDAY、TUESDAY、WEDNESDAY、THURSDAY、FRIDAY、SATURDAY就是一个枚举。

提示:枚举的本质是“有名字的数字常量”。由此可见,它是数字常量的变种,这是需要大家注意的地方。

2、枚举定义

枚举的形式为:

enum 枚举名{
标识符[=整型常数],
标识符[=整型常数],
...
标识符[=整型常数]
};

代码如下所示:

enum Direction {
    Up = 1,
    Down,
    Left,
    Right
}

如果枚举没有初始化,即省掉"=整型常数"时, 则从第一个标识符开始,顺次赋给标识符0, 1, 2, ...。但当枚举中的某个成员赋值后,其后的成员按依次加1的规则确定其值。

注意:
(1)枚举中每个成员(标识符)结束符是"," 不是";", 最后一个成员可省略","。
(2)初始化时可以赋负数, 以后的标识符仍依次加1。

3、枚举类型变量的赋值和使用

枚举变量只能取枚举说明结构中的某个标识符常量。

枚举元素不是字符常量也不是字符串常量,使用时不要加单、双引号。

4、常数枚举

常数枚举只能使用常数枚举表达式并且不同于常规的枚举的是它们在编译阶段会被删除。常数枚举成员在使用的地方被内联进来。这是因为常数枚举不可能有计算成员。

const enum Directions {
    Up,
    Down,
    Left,
    Right
}

let directions = [Directions.Up, Directions.Down, Directions.Left, Directions.Right]

生成后的代码为:

var directions = [0 /* Up */, 1 /* Down */, 2 /* Left */, 3 /* Right */];