关于数组:如何使用typescript获取枚举的所有值?

How to get all the values of an enum with typescript?

本问题已经有最佳答案,请猛点这里访问。

给定一个typescript枚举:

1
2
3
4
5
export enum Color {
    Red,
    Green,
    Blue,
}

我想要在其所有的价值观在一个数组:像婊子

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

然而当枚举与工作……

1
const colors = Object.keys(Color);

他把阵列和由其组成的指标值:

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

这是为什么和如何在案例可以只把values?


您可以过滤掉数字键:

1
2
3
4
5
const colors = Object.keys(Color).filter((item) => {
    return isNaN(Number(item));
});
console.log(colors.join("
"));

这将打印:

1
2
3
Red
Green
Blue

一个typescript枚举最终将生成一个普通的javascript对象:

1
2
3
4
5
6
7
8
{
  '0': 'Red',
  '1': 'Green',
  '2': 'Blue',
  Red: 0,
  Green: 1,
  Blue: 2
}

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

1
2
3
console.log(Color[0]); //"Red"
console.log(Color["0"]); //"Red"
console.log(Color["Red"]) // 0