Mise à jour :
Comme indiqué par @ iX3, Typescript 2.4 prend en charge les chaînes enum.
Voir: Créer une énumération avec des valeurs de chaîne dans Typescript
Réponse originale:
Pour les valeurs de membre String, TypeScript autorise uniquement les nombres en tant que valeurs de membre d'énumération. Mais il existe quelques solutions / hacks que vous pouvez mettre en œuvre;
Solution 1:
copié de: https://blog.rsuter.com/how-to-implement-an-enum-with-string-values-in-typescript/
Il existe une solution simple: il suffit de convertir la chaîne littérale en any avant d'affecter:
export enum Language {
English = <any>"English",
German = <any>"German",
French = <any>"French",
Italian = <any>"Italian"
}
solution 2:
copié de: https://basarat.gitbooks.io/typescript/content/docs/types/literal-types.html
Vous pouvez utiliser un littéral de chaîne comme type. Par exemple:
let foo: 'Hello';
Ici, nous avons créé une variable appelée foo qui permettra uniquement de lui attribuer la valeur littérale «Hello». Ceci est démontré ci-dessous:
let foo: 'Hello';
foo = 'Bar'; // Error: "Bar" is not assignable to type "Hello"
Ils ne sont pas très utiles en eux-mêmes mais peuvent être combinés dans une union de types pour créer une abstraction puissante (et utile), par exemple:
type CardinalDirection =
"North"
| "East"
| "South"
| "West";
function move(distance: number, direction: CardinalDirection) {
// ...
}
move(1,"North"); // Okay
move(1,"Nurth"); // Error!