Чтобы получить ключ перечисления в TypeScript, используя его значение, вы можете использовать следующие методы:
-
Итерация по ключам перечисления:
function getKeyByValue(enumObj: any, value: any): string | undefined { for (let key in enumObj) { if (enumObj[key] === value) { return key; } } return undefined; } -
Использование объекта обратного сопоставления:
function getKeyByValue(enumObj: any, value: any): string | undefined { const reverseMapping = Object.entries(enumObj).reduce((acc, [key, val]) => { acc[val] = key; return acc; }, {}); return reverseMapping[value]; } -
Использование оператора keyof TypeScript:
function getKeyByValue<T extends Record<string, string | number>>( enumObj: T, value: string | number ): keyof T | undefined { const keys = Object.keys(enumObj) as Array<keyof T>; const foundKey = keys.find(key => enumObj[key] === value); return foundKey ?? undefined; }
Эти методы позволяют получить ключ перечисления на основе его значения. Не забудьте заменить enumObjфактическим именем вашего объекта перечисления, а valueжелаемым значением, для которого вы хотите найти ключ.