Преобразовать строку в enum с помощью дженериков
Как я могу преобразовать строку в Enum с использованием обобщений в TypeScript?
export function getMethodEnum<T>(actionStr: string): T
{
return actionStr as T; // does not work
}
export enum ActionEnum {
Unknown = 0,
Sleep = 1,
Run
}
let action: ActionEnum = getMethodEnum<ActionEnum>()
1 ответ
Вам необходимо отправить фактический объект перечисления в функцию, так как вы хотите отобразить имя строки перечисления в значение. Это отношение хранится в самом объекте enum.
function getMethodEnum<T>(enumObject: T, actionStr: string): T[keyof T]
{
return enumObject[actionStr as keyof T];
}
enum ActionEnum {
Unknown = 0,
Sleep = 1,
Run
}
let action: ActionEnum = getMethodEnum(ActionEnum, "Sleep");