我知道使用Typescript创建字符串枚举存在问题,即使在v2.4 +中也是如此 我正在使用typescript 2.8和Angular 6。
我想有一个枚举,可以从枚举中自由获取字符串值,并将字符串解析为枚举。
假设我有这个枚举:
export enum MyEnum{
INIT = 'init-room',
CLOSE = 'close-room'
}
此枚举对于与rest API通信非常有用。所以从API和API我必须发送字符串。但在应用内部我想尽快将字符串从API转换为枚举。
所以我想要解析函数,并将我的枚举字符串化。
我尝试这种方法,但这不起作用。
export function toString(type: MyEnum): string {
return MyEnum[type];
}
export function parse(type: string): Mode {
return MyEnum[type];
}
嗯,这并不奇怪,因为我想从这个枚举中获取value
,而不是MyEnum[type]
- 但我不知道该如何做到这一点。
我知道将密钥转换为值存在问题,而值对密钥有效。 所以我要求任何干净的代码解决方案来实现我的目标。
答案 0 :(得分:0)
也许尝试获得这样的价值:
return MyEnum.type;
答案 1 :(得分:0)
尝试以下方法:
enumValues(enumType:any):number[] {
return Object.keys(enumType).map(k => enumType[k]).filter(v => typeof v === "number")
}
enumString(enumType:any, enumValue:any):string {
return enumType[enumValue];
}
答案 2 :(得分:0)
您可以安全地切换到常数。