代码之家  ›  专栏  ›  技术社区  ›  wonea Ilya Smagin

使用泛型将字符串转换为枚举

  •  0
  • wonea Ilya Smagin  · 技术社区  · 6 年前

    如何使用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 回复  |  直到 6 年前
        1
  •  2
  •   Titian Cernicova-Dragomir    6 年前

    您需要将实际的enum对象发送到函数,因为您要将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");
    
    推荐文章