给定一个 TypeScript 枚举:
export enum Color {
Red,
Green,
Blue,
}
我想像这样在数组中获取它的所有值:
["Red", "Green", "Blue"]
然而,当我处理那个枚举时
const colors = Object.keys(Color);
我得到了由其索引和值组成的奇怪数组:
[ '0', '1', '2', 'Red', 'Green', 'Blue' ]
为什么会这样,我怎样才能只获取值?
您必须通过 Object.values
或 Object.keys
过滤掉数字键:
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