如何将字符串值转换为打字稿中的枚举

时间:2019-08-15 17:08:13

标签: typescript

这是我的枚举定义

export enum CallerComponent {
  HOMEPAGE= 'homepage',
  DEFAULT = 'default'
}

 callerString = 'homepage';
 const caller: CallerComponent  = CallerComponent[callerString] //I'm getting undefined...

我找到的所有页面都说这是必经之路。我想念什么吗?

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

您可以尝试类似的操作:

const callerString: string = "homepage";
Object.keys(CallerComponent).forEach((key) => {
    const component: CallerComponent = CallerComponent[key as keyof typeof CallerComponent]
    console.log(component);
});

编辑:谷歌搜索结果回答了相同的question(也有类似的解决方案)

答案 1 :(得分:0)

CallerComponent{HOMEPAGE: "homepage", DEFAULT: "default"}一样编译成字典。为什么CallerComponent [“ homepage”]是undefined

还有"homepage" === CallerComponent.HOMEPAGE

所以,我很困惑。您想实现什么?

UPD:知道了。我想您尝试通过值获取键名?它适用于常规枚举而不是字符串枚举。

    export enum CallerComponent {
       HOMEPAGE,
       DEFAULT
    }


    const keyName = CallerComponent[CallerComponent.HOMEPAGE]; // HOMEPAGE

更多信息在这里:https://www.typescriptlang.org/docs/handbook/enums.html#reverse-mappings

  

请记住,字符串枚举成员根本不会生成反向映射。

因此,如果您确实由于某些原因想要将其撤消,则可以像通常使用普通javascript那样玩转基础字典