Typescript枚举值作为数组

时间:2019-05-08 08:23:33

标签: typescript enums

是否可以将TypeScript中的枚举值作为数组获取?

赞:

{
    "Data": 
    {
        "Publish_Date":"2019-04-25T12:30:00+01:00"
    }
} 

成为

enum MyEnum {
    FOO = 'foo',
    BAR = 'bar'
}

4 个答案:

答案 0 :(得分:1)

string枚举执行此操作的最简单方法是使用Object.values

enum MyEnum {
    FOO = 'foo',
    BAR = 'bar'
}
console.log(Object.values(MyEnum));

答案 1 :(得分:1)

是的,可以使用:

Object.values(MyEnum)

因为枚举是编译后的JS对象:

var MyEnum;
(function (MyEnum) {
    MyEnum["FOO"] = "foo";
    MyEnum["BAR"] = "bar";
})(MyEnum || (MyEnum = {}));

答案 2 :(得分:1)

我想说正确的答案应该是Object.values的结果:

const enumAsArray = Object.values(MyEnum);
enumAsArray.splice(0, enumAsArray.length/2);

答案 3 :(得分:0)

对于完全类型化的代码,您可能希望借助 template literal 运算符将值列表推断为类型:

enum MyEnum {
    FOO = 'foo',
    BAR = 'bar'
}

type MyEnumValue = `${MyEnum}`
// => type MyEnumValue = "foo" | "bar"

const values: MyEnumValue[] = Object.values(MyEnum)
// => ["foo", "bar"]

参考文章:Get the values of an enum dynamically