枚举(Enum)类型用于取值被限定在一定范围内的场景,比如一周只能有七天,颜色限定为红绿蓝等。

  1. enum Days {Sun, Mon, Tue, Wed, Thu, Fri, Sat};
  2. // 会编译为
  3. var Days;
  4. (function (Days) {
  5. Days[Days["Sun"] = 0] = "Sun";
  6. Days[Days["Mon"] = 1] = "Mon";
  7. Days[Days["Tue"] = 2] = "Tue";
  8. Days[Days["Wed"] = 3] = "Wed";
  9. Days[Days["Thu"] = 4] = "Thu";
  10. Days[Days["Fri"] = 5] = "Fri";
  11. Days[Days["Sat"] = 6] = "Sat";
  12. })(Days || (Days = {}));

常数枚举

常数枚举是使用 const enum 定义的枚举类型:

  1. const enum Directions {
  2. Up,
  3. Down,
  4. Left,
  5. Right
  6. }
  7. let directions = [
  8. Directions.Up, Directions.Down, Directions.Left, Directions.Right
  9. ];
  10. // 会编译为
  11. var directions = [0 /* Up */, 1 /* Down */, 2 /* Left */, 3 /* Right */];

外部枚举

外部枚举(Ambient Enums)是使用 declare enum 定义的枚举类型:

  1. declare enum Directions {
  2. Up,
  3. Down,
  4. Left,
  5. Right
  6. }
  7. let directions = [
  8. Directions.Up, Directions.Down, Directions.Left, Directions.Right
  9. ];
  10. //
  11. // 会编译为
  12. var directions = [
  13. Directions.Up, Directions.Down, Directions.Left, Directions.Right
  14. ];