Преобразовать строку в 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");
Другие вопросы по тегам