TypeScript 枚举

枚举 是一个特殊的 "类",表示一组常量(不可更改的变量)。

枚举有两种类型:字符串数字

让我们从数字开始。


数字型枚举 - 默认

默认情况下,枚举会将第一个值初始化为 0,并为每个附加值加 1:

实例
  1. enum CardinalDirections {
  2. North,
  3. East,
  4. South,
  5. West
  6. };
  7. let currentDirection = CardinalDirections.North;
  8. // North 是第一个值,所以输出 '0'
  9. console.log(currentDirection);
  10. // 当 'North' 不是有效的枚举时引发错误
  11. // currentDirection = 'North';
  12. // Error: "North" is not assignable to type 'CardinalDirections'.

数字型枚举 - 初始化

您可以设置第一个数字枚举的值,并使其自动递增:

实例
  1. enum CardinalDirections {
  2. North = 1,
  3. East,
  4. South,
  5. West
  6. };
  7. // 输出 1,因为我们将第一个值初始化为 "0" 以外的值
  8. console.log(CardinalDirections.North);
  9. // 输出 4,因为是从 1" 开始的
  10. console.log(CardinalDirections.West);

数字型枚举 - 完全初始化

可以为每个枚举值指定唯一的数值。然后这些值不会自动递增:

实例
  1. enum StatusCodes {
  2. NotFound = 404,
  3. Success = 200,
  4. Accepted = 202,
  5. BadRequest = 400
  6. };
  7. // logs 404
  8. console.log(StatusCodes.NotFound);
  9. // logs 200
  10. console.log(StatusCodes.Success);

字符串枚举

枚举也可以包含 字符串。由于其可读性更强,所以比数字枚举更常见。

实例
  1. enum CardinalDirections {
  2. North = 'North',
  3. East = "East",
  4. South = "South",
  5. West = "West"
  6. };
  7. // logs "North"
  8. console.log(CardinalDirections.North);
  9. // logs "West"
  10. console.log(CardinalDirections.West);
从技术上讲,您可以混合使用字符串和数字枚举值,但不建议这样做。