将int转换为Typescript中的枚举字符串

时间:2017-02-17 13:31:13

标签: javascript angular typescript enums

我从RESTful服务获得以下数据:

[
  {
    "id": 42,
    "type": 0,
    "name": "Piety was here",
    "description": "Bacon is tasty, tofu not, ain't nobody like me, cause i'm hot...",
  }...

我正在使用这个类进行映射:

export enum Type {
  Info,
  Warning,
  Error,
  Fatal,
}


export class Message{
  public id: number;
  public type: Type:
  public name: string;
  public description: string;
}

但是当我在Angular2中访问'type'时,我只得到一个int值。但是我想获得一个字符串值。

e.g:

'message.type=0'
{{message.type}} => should be Info
'message.type=1'
{{message.type}} => should be Warning

3 个答案:

答案 0 :(得分:32)

TypeScript中的枚举是运行时的数字,因此message.type将为0123

要获取字符串值,您需要将该数字作为索引传递给枚举:

Type[0] // "Info"

因此,在您的示例中,您需要执行此操作:

Type[message.type] // "Info" when message.type is 0

Docs

答案 1 :(得分:26)

TypeScript中的枚举是运行时的对象,对于所有可能的值,这些对象具有来自int -> stringstring -> int的属性。

要访问您需要调用的字符串值:

Type[0] // "Info"

确保您将正确的类型传递到属性访问器中,因为链式调用可能导致以下结果:

Type[Type.Info] // "Info"
Type[Type[Type.Info]] // 0
Type["Info"] // 0
Type[0] // "Info"

答案 2 :(得分:1)

我想用

{{message.type}}

您只需获取映射值而不是枚举值。 请尝试以下代码。

{{TYPE[message.type]}}