Преобразовать строку в enum с помощью дженериков - PullRequest
0 голосов
/ 24 сентября 2018

Как я могу преобразовать строку в 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 Ответ

0 голосов
/ 24 сентября 2018

Вам необходимо отправить фактический объект перечисления в функцию, поскольку вы хотите сопоставить строковое имя перечисления со значением.Это отношение хранится в самом объекте 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");
...