📜  typescript 枚举到数组 - TypeScript (1)

📅  最后修改于: 2023-12-03 14:48:05.436000             🧑  作者: Mango

TypeScript 枚举到数组 - TypeScript

在 TypeScript 中,枚举是一种用来表示一组相关常量值的数据结构。它们通常会用于表示状态码、配置选项等。

然而,在某些情况下,我们希望将枚举的所有值存储到数组中,以便进行遍历或其他相关操作。在这篇文章中,我们将介绍如何将 TypeScript 枚举转换为数组。

方法一:手动创建数组

最简单的方法是手动创建一个数组,将枚举中的每个值逐一添加到该数组中。例如:

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

const directions = [
  Direction.Up,
  Direction.Down,
  Direction.Left,
  Direction.Right,
];

这种方法虽然简单易懂,对于枚举值较多的情况,需要人工逐个添加,有些繁琐。

方法二:Object.values()

在 ECMAScript 2017 中,引入了 Object.values() 方法,用于返回一个对象中所有的值组成的数组。由于 TypeScript 中的枚举本质上也是一个对象,因此我们也可以使用 Object.values() 方法将其转换为数组。例如:

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

const directions = Object.values(Direction);

这种方法简洁高效,不需要手动逐个添加,但要注意的是,如果枚举中存在任何数值成员,Object.values() 方法会将其返回,需要在遍历数组时进行过滤。

方法三:ts-enum-util 库

如果您需要频繁地将 TypeScript 枚举转换为数组,可以使用 ts-enum-util 库,它提供了许多与枚举相关的实用功能。例如,您可以使用 getEnumValues() 方法将枚举转换为数组:

import { getEnumValues } from "ts-enum-util";

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

const directions = getEnumValues(Direction);

这种方法不仅简单高效,而且更加安全,不会受到 Object.values() 的限制。

总之,在将 TypeScript 枚举转换为数组时,有多种方法可供选择,具体取决于您的需求和偏好。无论您选择哪种方法,都要注意检查枚举中的数值成员,并考虑是否需要进行额外的过滤处理。