タイスクリプトの列挙型はどのようにマッピングしますか?例えば、文字列でこれを行うことができます。Map Typescript Enum
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)によると、列挙型でジェネリックを使用するのはまだtypescriptでは可能ではありません。 –
具体的なタイプ情報はどこですか? –
この関数シグネチャは改善されています: 'function mapEnum(EnumerType、fn:(v:any)=> T):T []'。残念ながら 'v'はまだanyの型を持っています。理想的には、「v」の型は列挙型の型から推定される。残念ながら、これは現在可能なようには見えません。 (私はそれについて間違っているのが大好きです!) –