我有一个字符串枚举,需要获取所有值。例如,对于以下枚举,我想返回["Red", "Yellow"]
:
export enum FruitColors {
Apple = "Red",
Banana = "Yellow",
}
答案 0 :(得分:3)
您正在寻找Object.values()
答案 1 :(得分:1)
根据this GitHub comment,可以通过以下方式实现:
Object.keys(FruitColors).map(c => FruitColors[c]);
答案 2 :(得分:0)
您可以检查FruitColors
对象。请注意,如果您没有为枚举值指定名称,则生成的代码将不同,并且基于键/值的简单映射将导致错误的结果。 e.g。
export enum FruitColors {
"Red",
"Yellow",
}
Object.values(FruitColors); // ["Red", "Yellow", 0, 1]
因为生成的代码是这样的:
var FruitColors;
(function (FruitColors) {
FruitColors[FruitColors["Red"] = 0] = "Red";
FruitColors[FruitColors["Yellow"] = 1] = "Yellow";
})(FruitColors = exports.FruitColors || (exports.FruitColors = {}));
然后,您可以按typeof value == "string"
过滤结果。
答案 3 :(得分:0)
也许你可以试试这个函数,它可以返回字符串+数字枚举类型的所有值,而不仅仅是字符串枚举
const getAllValuesEnum = (enumType: any) => {
const keysAndValues = Object.values(enumType);
const values = [];
keysAndValues.forEach((keyOrValue: any) => {
if (isNaN(Number(keyOrValue))) {
values.push(enumType[keyOrValue] || keyOrValue);
}
});
return values;
};
示例:
enum MyEnum {
A = "a",
B = 7,
C = "c",
D = 1,
}
它会返回 [ 1, 7, 'a', 'c' ]