如何使用打字稿获取枚举的所有值?

时间:2018-02-13 14:10:26

标签: arrays typescript object enums

给出一个TypeScript枚举:

export enum Color {
    Red,
    Green,
    Blue,
}

我想在数组中得到它的所有值:

["Red", "Green", "Blue"]

然而,当我使用

处理这个枚举时
const colors = Object.keys(Color);

我得到了由其索引和值组成的怪异数组:

[ '0', '1', '2', 'Red', 'Green', 'Blue' ]

为什么会这样,我怎么才能得到这些值?

1 个答案:

答案 0 :(得分:2)

您可以过滤掉数字键:

const colors = Object.keys(Color).filter((item) => {
    return isNaN(Number(item));
});
console.log(colors.join("\n"));

这将打印:

Red
Green
Blue

TypeScript枚举最终会转换为纯JavaScript对象:

{ 
  '0': 'Red', 
  '1': 'Green',
  '2': 'Blue',
  Red: 0,
  Green: 1,
  Blue: 2
}

因此,您可以使用数字索引作为键来获取值,您可以使用该值在枚举中查找其索引:

console.log(Color[0]); // "Red"
console.log(Color["0"]); // "Red"
console.log(Color["Red"]) // 0
相关问题