1. ホーム
  2. javascript

Typescript で int を enum 文字列にキャストする

2023-09-11 17:06:28

質問

RESTful Serviceから以下のデータを取得しました。

[
  {
    "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型の値しか得られない。しかし、私は文字列の値を取得したいです。

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

どのように解決するのですか?

TypeScriptのEnumは実行時に数値になるため message.type0 , 1 , 2 または 3 .

文字列の値を取得するためには、その番号をインデックスとしてenumに渡す必要があります。

Type[0] // "Info"

ということで、例の場合、こうする必要があります。

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

ドキュメント