我将如何映射打印稿枚举?例如,对于字符串你可以这样做:Map 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 ':(';
}
}); // [ ':)', ':(' ]
我一直在摆弄周围与得到,这是否对我来说是功能,但保留其获得的仿制药恰到好处的问题。
这很好,让我成为一个可行的解决方案,但它在保存类型信息方面没有做到。添加一些泛型将非常有帮助。根据[this](http://stackoverflow.com/questions/30774874/enum-as-parameter-in-typescript),但是,它看起来像使用泛型与枚举是不完全可能与打字稿迄今。 –
您需要哪种类型的信息,具体而言,以及在哪里? –
这个函数签名是一个改进:'function mapEnum(enumerable:EnumType,fn:(v:any)=> T):T []'。不幸的是'v'仍然有一种类型。理想情况下,'v'的类型可以从可枚举类型推断出来。不幸的是,目前看起来这不是可能的。 (虽然我很想错!) –