javascript - Prevod int na enum reťazce v Typescripte


Z RESTful služby dostávam nasledovné dáta:

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

A mapujem s touto triedou:

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


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

Ale keď pristupujem k 'type' v Angular2, dostávam iba hodnotu typu int. Ale rád by som dostal hodnotu typu string.

napr.:

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

Odpoveď č. 1

Enumy v TypeScript sú počas behu číslami, takže message.type bude 0, 1, 2 alebo 3.

Aby ste získali hodnotu reťazca, musíte túto číslicu odovzdať do výčtu ako index:

Type[0] // "Info"

Takže vo vašom príklade budete musieť urobiť toto:

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

Dokumenty

Odpoveď č. 2

Enumy v TypeScripte sú objekty počas behu, ktoré majú vlastnosti prechodzajúce od int -> string a od string -> int pre všetky možné hodnoty.

Na prístup k hodnotu reťazca budete musieť zavolať:

Type[0] // "Info"

Uistite sa, že do prístupu k vlastnosti zadávate správny typ, pretože reťazené volania môžu viesť k nasledujúcemu:

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

Súvisiace články