Typescriptで値によって列挙型キーを取得するにはどうすればよいですか?
How Get Enum Key Value Typescript
解決:
はい、正しいエラーが発生しました。あなたがあなたを手に入れたいなら列挙型キー
その場合の値は、.tsに対して次のように列挙型を書き直す必要があります。
列挙型の色をエクスポート{RED = 'RED COLOR'、BLUE = 'BLUE COLOR'、GREEN = 'GREEN COLOR'}次に、次のようになります。
enumKey = Colors ['BLUE COLOR']; console.log(enumKey);
もう1つの方法は、ループすることです。これは少しコストがかかり、コードはノイズが多く、私は好みません。
アップデート:
.tsxの場合は次のようになります。
エクスポートenumColors {RED = 'RED COLOR' as any、BLUE = 'BLUE COLOR' as any、GREEN = 'GREEN COLOR' as any}また、上記のように機能するはずです。
この機能を使っています
エクスポート関数getEnumKeyByEnumValue(myEnum:any、enumValue:number | string):string {let keys = Object.keys(myEnum).filter((x)=> myEnum [x] == enumValue); keys.length> 0を返しますか?キー[0]: ''; }でテストする
describe( 'enum'、()=> {enum TestEnumWithNumber {ZERO} enum TestEnumWithString {ZERO = 'ZERO'} it( 'enumに数値がある場合は正しいキーを返す必要があります'、function(){const key = getEnumKeyByEnumValue(TestEnumWithNumber、 TestEnumWithNumber.ZERO); expect(key).toBe( 'ZERO');}); it( 'enumに文字列値がある場合は正しいキーを返す必要があります'、function(){const key = getEnumKeyByEnumValue(TestEnumWithString、TestEnumWithString.ZERO); expect(key).toBe( 'ZERO');}); it( '対応する文字列値を渡すことで正しいキーを返す必要があります'、function(){const key = getEnumKeyByEnumValue(TestEnumWithString、 'ZERO'); expect(key)。 toBe( 'ZERO');});});それが誰かを助けることを願っています
const findMe = Object.keys(Colors)[Object.values(Colors).indexOf( 'BLUE COLOR')];https://jsfiddle.net/anniebbird/agy3unfk/3/