javascript - 如何在 Typescript 中遍历以整数为值的枚举?
我有一个枚举
export enums Actions {
All = 1,
Success = 2,
Failed = 3
}
当我使用 for 循环迭代它时,我总共得到 6 个条目。我了解到这就是 Typescript 中的工作方式。但是我如何使用枚举以便可以访问
enum.key
用于“全部、成功、失败”和
enum.value
为 1,2,3
答案#1
根据 TypeScript 的文档,如果 as const 关键字足够,那么我们就不需要使用枚举。
只是解释,也许在这种情况下可以使用如图所示的实现,使用 Object.keys(obj) 和 Object.values(obj) 来获取所需的输出
const Actions = {
All: 0,
Success: 1,
Failure: 2
} as const
let keyArr = Object.keys(Actions);
let valArr = Object.values(Actions);
答案#2
为了像你在原帖中描述的那样访问枚举 keys 和 values,你可以将你的枚举转换为一个基本对象,该对象具有 keys 和 values 属性,并包含相应的数据。
export enum Actions {
All = 1,
Success = 2,
Failed = 3
}
export type ConvertedActions = {
keys: string[];
values: Actions[];
};
const result = Object.values(Actions).reduce(
(acc, curr): ConvertedActions =>
isNaN(+curr)
? {...acc, keys: [...acc.keys, curr as string]}
: {...acc, values: [...acc.values, curr as Actions]},
<ConvertedActions>{keys: [], values: []}
);
console.log(result.keys); // [ 'All', 'Success', 'Failed' ]
console.log(result.values); // [ 1, 2, 3 ]
注意:不要被我定义的额外类型(ConvertedActions)弄糊涂。不过,它是为了避免大量使用 any 所必需的。
