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"
