打字稿枚举值作为数组

Leh*_*hks 22 enums typescript

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

像这样:

enum MyEnum {
    FOO = 'foo',
    BAR = 'bar'
}
Run Code Online (Sandbox Code Playgroud)

变成

['foo', 'bar']
Run Code Online (Sandbox Code Playgroud)

小智 32

是的,可以使用:

Object.values(MyEnum)
Run Code Online (Sandbox Code Playgroud)

因为 enum 是编译后的 JS 对象:

var MyEnum;
(function (MyEnum) {
    MyEnum["FOO"] = "foo";
    MyEnum["BAR"] = "bar";
})(MyEnum || (MyEnum = {}));
Run Code Online (Sandbox Code Playgroud)


Arn*_*met 12

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

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

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

const values: MyEnumValue[] = Object.values(MyEnum)
// => ["foo", "bar"]
Run Code Online (Sandbox Code Playgroud)

参考文章:动态获取枚举的值 (免责声明:作者在此)


Tit*_*mir 6

string枚举做这件事的最简单方法是使用Object.values

enum MyEnum {
    FOO = 'foo',
    BAR = 'bar'
}
console.log(Object.values(MyEnum));
Run Code Online (Sandbox Code Playgroud)