web-dev-qa-db-fra.com

Cast int pour énumérer les chaînes dans Typescript

Je reçois d'un service RESTful les données suivantes:

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

Et je mappe avec cette classe:

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


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

Mais lorsque j'accède à 'type' dans Angular2, je n'ai qu'une valeur int. Mais j'aimerais obtenir une valeur de chaîne.

par exemple:

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

Les énumérations dans TypeScript sont des nombres au moment de l'exécution, donc message.type sera 0, 1, 2 ou 3.

Pour obtenir la valeur de chaîne, vous devez passer ce nombre dans l'énumération sous forme d'index:

Type[0] // "Info"

Donc, dans votre exemple, vous devrez faire ceci:

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

Docs

40
James Monger

Les énumérations dans TypeScript sont des objets au moment de l’exécution qui ont des propriétés allant de int -> string et de string -> int pour toutes les valeurs possibles.

Pour accéder à la valeur de la chaîne, vous devrez appeler:

Type[0] // "Info"

Assurez-vous cependant que vous passez le type correct dans l'accesseur de propriété, car les appels en chaîne peuvent avoir les conséquences suivantes:

Type[Type.Info] // "Info"
Type[Type[Type.Info]] // 0
Type["Info"] // 0
Type[0] // "Info"
31
Teddy Sterne

Je pense avec

{{message.type}}

vous obtenez juste la valeur mappée et non l'énumération. S'il vous plaît essayez de suivre le code.

{{TYPE[message.type]}}
1
C.Stebner