📜  TypeScript枚举(1)

📅  最后修改于: 2023-12-03 15:35:24.813000             🧑  作者: Mango

TypeScript枚举

枚举(Enums)在程序开发中扮演了很重要的角色,通过为一组数据集合取一个可读的名字,可以使程序更具可读性。TypeScript提供了枚举类型来定义命名的常量集合及其值。

基本使用

枚举类型可以通过 enum 表达式来定义,值可以是数值、字符串或者是另一个枚举成员。

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

console.log(Direction.Up) // 输出 1
console.log(Direction[1]) // 输出 Up

上面的例子中,我们定义了一个枚举类型 Direction,并为每一个成员指定了数值。默认情况下,枚举成员从 0 开始自动编号,但是也可以手动指定它们的值。如果没有手动指定,那么它们的值会从前一个成员的值累加而来。

数字枚举

当我们需要操作一些原始值的时候,可以使用数字枚举。在上面的例子中,我们指定了每一个枚举成员的数值。如果一个枚举成员没有被赋值,那么它的值等于前一个枚举成员的值加 1。如果第一个枚举成员没有被赋值,那么它的值默认为 0。

enum Direction {
  Up,
  Down,
  Left,
  Right
}

console.log(Direction.Up) // 输出 0
console.log(Direction.Down) // 输出 1

我们也可以改变枚举成员的值,如下所示:

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

console.log(Direction.Up) // 输出 1
console.log(Direction.Down) // 输出 2
字符串枚举

字符串枚举与数字枚举基本相同,只不过它的值是字符串而不是数字。

enum Direction {
  Up = "UP",
  Down = "DOWN",
  Left = "LEFT",
  Right = "RIGHT"
}

console.log(Direction.Up) // 输出 UP
console.log(Direction.Down) // 输出 DOWN
异构枚举

异构枚举包含了数字和字符串成员,这在实际开发中比较少用到。

enum BooleanLikeHeterogeneousEnum {
  No = 0,
  Yes = "YES"
}
运行时枚举

枚举在运行时是真正存在的对象。上面我们使用了 console.log(Direction.Up) 来输出 Up 的值。我们也可以通过 Object 来获取枚举对象。

enum Direction {
  Up = "UP",
  Down = "DOWN",
  Left = "LEFT",
  Right = "RIGHT"
}

const direction = Object.keys(Direction).reduce((result, key) => {
  const value = Direction[key];
  if (typeof value === "string") {
    result.push(value);
  }
  return result;
}, []);

console.log(direction) // 输出 ["UP", "DOWN", "LEFT", "RIGHT"]
总结

本文介绍了 TypeScript 枚举的基本概念和使用方法,包括数字枚举和字符串枚举。枚举可以大大增强程序的可读性和可维护性,希望可以对读者有所帮助。