📅  最后修改于: 2023-12-03 14:48:05.436000             🧑  作者: Mango
在 TypeScript 中,枚举是一种用来表示一组相关常量值的数据结构。它们通常会用于表示状态码、配置选项等。
然而,在某些情况下,我们希望将枚举的所有值存储到数组中,以便进行遍历或其他相关操作。在这篇文章中,我们将介绍如何将 TypeScript 枚举转换为数组。
最简单的方法是手动创建一个数组,将枚举中的每个值逐一添加到该数组中。例如:
enum Direction {
Up = "UP",
Down = "DOWN",
Left = "LEFT",
Right = "RIGHT",
}
const directions = [
Direction.Up,
Direction.Down,
Direction.Left,
Direction.Right,
];
这种方法虽然简单易懂,对于枚举值较多的情况,需要人工逐个添加,有些繁琐。
在 ECMAScript 2017 中,引入了 Object.values()
方法,用于返回一个对象中所有的值组成的数组。由于 TypeScript 中的枚举本质上也是一个对象,因此我们也可以使用 Object.values()
方法将其转换为数组。例如:
enum Direction {
Up = "UP",
Down = "DOWN",
Left = "LEFT",
Right = "RIGHT",
}
const directions = Object.values(Direction);
这种方法简洁高效,不需要手动逐个添加,但要注意的是,如果枚举中存在任何数值成员,Object.values()
方法会将其返回,需要在遍历数组时进行过滤。
如果您需要频繁地将 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 枚举转换为数组时,有多种方法可供选择,具体取决于您的需求和偏好。无论您选择哪种方法,都要注意检查枚举中的数值成员,并考虑是否需要进行额外的过滤处理。