【发布时间】:2017-05-09 13:17:15
【问题描述】:
我将如何映射打字稿枚举?例如,对于字符串,您可以这样做:
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 ':(';
}
}); // [ ':)', ':(' ]
我一直在摆弄一个可以为我执行此操作的函数,但一直遇到问题让泛型恰到好处。
【问题讨论】:
标签: javascript typescript enums