返回

TypeScript真香系列-枚举

前端

在 TypeScript 中,枚举类型是一种特殊的类型,可以用来表示一组相关的值。枚举类型的值都是常量,并且可以被直接使用。

枚举类型有以下几个好处:

  • 可读性强。 枚举类型的名称非常直观,可以帮助你快速理解代码的含义。
  • 可维护性强。 枚举类型的成员都是常量,这意味着它们不会改变。这可以帮助你防止代码中的错误。
  • 类型安全。 TypeScript 的编译器会检查枚举类型的使用情况,并确保你只使用合法的枚举值。这可以帮助你防止代码中的错误。

枚举类型的成员

枚举类型的成员可以是以下三种类型之一:

  • 数字。 数字类型的枚举成员表示一个整数。
  • 字符串。 字符串类型的枚举成员表示一个字符串。
  • 符号。 符号类型的枚举成员表示一个唯一的符号。

符号类型的枚举成员是 TypeScript 中的新特性。它们可以用来表示一组独特的标识符。

枚举类型的常量

枚举类型的成员都是常量。这意味着它们的值不能被改变。

枚举类型的编译

当 TypeScript 编译器将枚举类型编译成 JavaScript 时,它会将枚举类型的所有成员转换为 JavaScript 中的常量。

例如,以下 TypeScript 代码:

enum Colors {
  Red,
  Green,
  Blue
}

会被编译成以下 JavaScript 代码:

var Colors;
(function (Colors) {
    Colors[Colors["Red"] = 0] = "Red";
    Colors[Colors["Green"] = 1] = "Green";
    Colors[Colors["Blue"] = 2] = "Blue";
})(Colors || (Colors = {}));

枚举类型的使用

枚举类型的成员可以直接使用。例如,以下 TypeScript 代码:

console.log(Colors.Red); // 0
console.log(Colors.Green); // 1
console.log(Colors.Blue); // 2

会被编译成以下 JavaScript 代码:

console.log(Colors.Red); // 0
console.log(Colors.Green); // 1
console.log(Colors.Blue); // 2

枚举类型的类型安全

TypeScript 的编译器会检查枚举类型的使用情况,并确保你只使用合法的枚举值。例如,以下 TypeScript 代码:

// 错误!
console.log(Colors.Yellow);

会被 TypeScript 编译器报错。