javascript - Konvertera int till enum-strängar i Typescript
Jag får följande data från en RESTful-tjänst:
[
{
"id": 42,
"type": 0,
"name": "Piety was here",
"description": "Bacon is tasty, tofu not, ain't nobody like me, cause i'm hot...",
}...
Och jag kartlägger med den här klassen:
export enum Type {
Info,
Warning,
Error,
Fatal,
}
export class Message{
public id: number;
public type: Type:
public name: string;
public description: string;
}
Men när jag får tillgång till 'type' i Angular2 får jag bara ett heltalsvärde. Men jag skulle vilja få ett strängvärde.
t.ex:
'message.type=0'
{{message.type}} => should be Info
'message.type=1'
{{message.type}} => should be Warning
Svar #1
Enums i TypeScript är nummer vid körning, så message.type kommer att vara 0, 1, 2 eller 3.
För att få strängvärdet behöver du skicka det numret till enum som ett index:
Type[0] // "Info"
Så, i ditt exempel, kommer du att behöva göra detta:
Type[message.type] // "Info" when message.type is 0
Dokument
Svar #2
Enums i TypeScript är objekt vid körning som har egenskaper som går från int -> string och från string -> int för alla möjliga värden.
För att komma åt strängvärdet behöver du anropa:
Type[0] // "Info"
Se till att du skickar rätt typ till egenskapsåtkomstmetoden, eftersom kedjade anrop kan resultera i följande:
Type[Type.Info] // "Info"
Type[Type[Type.Info]] // 0
Type["Info"] // 0
Type[0] // "Info"
