这是我的枚举定义
export enum CallerComponent {
HOMEPAGE= 'homepage',
DEFAULT = 'default'
}
callerString = 'homepage';
const caller: CallerComponent = CallerComponent[callerString] //I'm getting undefined...
我找到的所有页面都说这是必经之路。我想念什么吗?
感谢您的帮助。
答案 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那样玩转基础字典