Je travaille sur un fichier de définitions pour l'API Google Maps pour TypeScript.
Et j'ai besoin de définir une énumération comme type par exemple. google.maps.Animation
qui contient deux propriétés: BOUNCE
et DROP
.
Comment cela devrait-il être fait dans TypeScript?
enums
typescript
eNepper
la source
la source
Réponses:
TypeScript 0.9+ a une spécification pour les énumérations:
La virgule finale est facultative.
la source
enum
construction à ce stade, car l'équipe TypeScript a clairement indiqué qu'elle allait changer - elle se cassera donc.À partir de TypeScript 0.9 (actuellement une version alpha), vous pouvez utiliser la définition enum comme ceci:
Par défaut, ces énumérations se verront attribuer respectivement 0, 1 et 2. Si vous souhaitez définir explicitement ces nombres, vous pouvez le faire dans le cadre de la déclaration d'énumération.
Listing 6.2 Énumérations avec des membres explicites
Ces deux exemples proviennent directement de TypeScript pour les programmeurs JavaScript .
Notez que ceci est différent de la spécification 0.8. La spécification 0.8 ressemblait à ceci - mais elle a été marquée comme expérimentale et susceptible de changer, vous devrez donc mettre à jour tout ancien code:
Clause de non - responsabilité - cet exemple 0.8 serait cassé dans les versions plus récentes du compilateur TypeScript.
la source
Cela fait maintenant partie de la langue. Voir TypeScriptLang.org> Types de base> enum pour la documentation à ce sujet. Un extrait de la documentation sur l'utilisation de ces énumérations:
Ou avec des numéros de support manuels:
Vous pouvez également revenir au nom enum en utilisant par exemple
Color[2]
.Voici un exemple de la façon dont tout cela va ensemble:
Cela enregistrera:
Parce qu'au moment d'écrire ceci, le Typescript Playground générera ce code:
la source
Juste une autre note que vous pouvez une énumération id / string avec ce qui suit:
la source
str
et l'id
utiliser?abstract class
plus approprié d'empêcher l'instanciation puisque TypeScript n'a pas la notion destatic class
?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:
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:
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:
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:
la source
Énumérations dactylographiées:
Les énumérations sont placées dans le langage dactylographié pour définir un ensemble de constantes nommées. L'utilisation d'énumérations peut nous faciliter la vie. La raison en est que ces constantes sont souvent plus faciles à lire que la valeur représentée par l'énumération.
Créer une énumération:
Cet exemple de la documentation dactylographiée explique très bien le fonctionnement des énumérations. Notez que notre première valeur d'énumération (Up) est initialisée avec 1. Tous les membres suivants de l'énumération de nombres sont ensuite automatiquement incrémentés à partir de cette valeur (c'est-à-dire Down = 2, Left = 3, Right = 4). Si nous n'avions pas initialisé la première valeur avec 1, l'énumération commencerait à 0, puis l'incrémentation automatique (c'est-à-dire Down = 1, Left = 2, Right = 3).
En utilisant une énumération:
Nous pouvons accéder aux valeurs de l'énumération de la manière suivante:
Notez que de cette façon, nous sommes beaucoup plus descriptifs dans la façon dont nous écrivons notre code. Les énumérations nous empêchent fondamentalement d'utiliser des nombres magiques (des nombres qui représentent une entité parce que le programmeur leur a donné une signification dans un certain contexte). Les nombres magiques sont mauvais pour les raisons suivantes:
la source