如何使用Typescript

时间:2018-05-20 12:45:04

标签: angular typescript enums

我知道使用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] - 但我不知道该如何做到这一点。

我知道将密钥转换为值存在问题,而值对密钥有效。 所以我要求任何干净的代码解决方案来实现我的目标。

3 个答案:

答案 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)

您可以安全地切换到常数。