web-dev-qa-db-fra.com

const enum dans Typescript

J'ai une application React qui utilise TypeScript. En ce moment, je rencontre un problème avec const enum. Voici mon énumération:

export const enum Snack {
    Apple = 0,
    Banana = 1,
    Orange = 2,
    Other = 3
}

Le service auquel j'essaie de faire correspondre ne renvoie pas la valeur, mais l'index de l'élément dans l'énumération. Ainsi, par exemple, si l'utilisateur est configuré pour grignoter une pomme, le service renvoie un 0 pour cet utilisateur au lieu de "Apple". Idéalement, j'aimerais faire quelque chose comme:

var snackIndex = UserSnack.type; // returning 0 in this example
var userSnack = Snack[snackIndex]; // would return 'Apple'

Lorsque j'essaye quelque chose de similaire, j'obtiens l'erreur suivante:

erreur TS2476: Un membre const enum n'est accessible qu'en utilisant un littéral de chaîne.

Étant donné que le service dont je reçois les données ne renvoie pas la chaîne, j'ai des problèmes pour que cela fonctionne.

Toute aide est appréciée.

19
addam

const dans une énumération signifie que l'énumération est entièrement effacée, ce qui signifie que vous ne pouvez pas l'indexer par une valeur arbitraire. Supprimez simplement le modificateur const.

Voir aussi Comment fonctionnent les différentes variantes d'énumération en TypeScript?

25
Ryan Cavanaugh