我将如何映射 typescript 枚举?例如,对于字符串,您可以这样做:
let arr = [ 'Hello', 'Goodbye' ];
arr.map(v => {
if (v === 'Hello') {
return ':)';
} else if (v === 'Goodbye') {
return ':(';
}
); // [ ':)', ':(' ]
当然,这不适用于枚举:
enum MyEnum { Hello, Goodbye };
MyEnum.map(v => {
if (v === MyEnum.Hello) {
return ':)';
} else if (v === MyEnum.Goodbye) {
return ':(';
}
}); // does not work
理想情况下,我想以一种通用的方式执行此操作,这样我就可以简单地获取我拥有的任何枚举并将其放入映射函数同时保留类型信息。用法可能看起来像这样:
map(MyEnum, v => {
if (v === MyEnum.Hello) {
return ':)';
} else if (v === MyEnum.Goodbye) {
return ':(';
}
}); // [ ':)', ':(' ]
我一直在摆弄一个函数来为我做这件事,但在让泛型恰到好处方面一直遇到问题。
最佳答案
要映射枚举,请执行以下操作:
(Object.keys(MyEnum) as Array<keyof typeof MyEnum>).map((key) => {})
关于javascript - map typescript 枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41308123/