Как да получите ключ за изброяване по стойност в Typescript?

How Get Enum Key Value Typescript



Решение:

Да, получихте правилната грешка. Ако искате да получите свояenum ключ отстойност в този случай трябва да напишете преброяването си така за .ts:

експортиране на изброяване Цветове {RED = 'RED COLOR', BLUE = 'BLUE COLOR', GREEN = 'GREEN COLOR'}

Тогава можете да получите така:



let enumKey = Цветове ['СИН ЦВЯТ']; console.log (enumKey);

въведете описание на изображението тук



Друг начин е да преминете през това, което би било малко скъпо и кодът би бил шумен, което не предпочитам.



Актуализация: За .tsx трябва да е така.

експортиране на изброени цветове {RED = 'RED COLOR' като произволно, BLUE = 'BLUE COLOR' като произволно, GREEN = 'GREEN COLOR' като произволно}

Тя също трябва да работи по горния начин.


Използвам тази функция



функция за експортиране getEnumKeyByEnumValue (myEnum: any, enumValue: number | string): string {let keys = Object.keys (myEnum) .filter ((x) => myEnum [x] == enumValue); return keys.length> 0? клавиши [0]: ''; }

Тестове с е

description ('enum', () => {enum TestEnumWithNumber {ZERO} enum TestEnumWithString {ZERO = 'ZERO'} it ('трябва да върне правилния ключ, когато enum има числови стойности', function () {const key = getEnumKeyByEnumValue (TestEnumWithNumber, TestEnumWithNumber.ZERO); очаквайте (ключ) .toBe ('ZERO');}); it ('трябва да върне правилния ключ, когато enum има низови стойности', function () {const key = getEnumKeyByEnumValue (TestEnumWithString, TestEnumWithString.ZERO); очаквам (ключ) .toBe ('НУЛА');}); it ('трябва да върне правилния ключ чрез предаване на съответната стойност на низ', function () {const key = getEnumKeyByEnumValue (TestEnumWithString, 'ZERO'); очаквам (ключ)). toBe ('НУЛА');});});

Дано да помогне на някого


const findMe = Object.keys (Цветове) [Object.values ​​(Цветове) .indexOf ('СИН ЦВЯТ')];

https://jsfiddle.net/anniebbird/agy3unfk/3/