给出一个TypeScript枚举:
export enum Color {
Red,
Green,
Blue,
}
我想在数组中得到它的所有值:
["Red", "Green", "Blue"]
然而,当我使用
处理这个枚举时const colors = Object.keys(Color);
我得到了由其索引和值组成的怪异数组:
[ '0', '1', '2', 'Red', 'Green', 'Blue' ]
为什么会这样,我怎么才能得到这些值?
答案 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