Question

Je suis en train de travailler sur un fichier de définitions de l'API Google maps pour les caractères d'imprimerie.

Et j'ai besoin de définir un enum comme type par exemple. google.maps.Animation qui contient deux propriétés: BOUNCE et DROP.

Comment cela doit être fait à la Machine?

Était-ce utile?

La solution

Tapuscrit de 0,9+ a un cahier des charges pour les énumérations:

enum AnimationType {
    BOUNCE,
    DROP,
}

La dernière virgule est facultative.

Autres conseils

Comme de Tapuscrit de 0,9 (actuellement en version alpha), vous pouvez utiliser l'enum définition comme ceci:

enum TShirtSize {
  Small,
  Medium,
  Large
}

var mySize = TShirtSize.Large;

Par défaut, ces énumérations sera attribué à 0, 1 et 2 respectivement.Si vous souhaitez définir explicitement ces numéros, vous pouvez le faire dans le cadre de la déclaration d'enum.

Listing 6.2 les Énumérations et les membres explicite

enum TShirtSize {
  Small = 3,
  Medium = 5,
  Large = 8
}

var mySize = TShirtSize.Large;

Ces deux exemples levé directement de Tapuscrit pour les Programmeurs JavaScript.

Notez que ceci est différent de 0.8 spécification. 0,8 spécification ressemblait à ça - mais il a été marqué comme expérimental et susceptibles de changer, de sorte que vous aurez à mettre à jour l'ancien code:

Avertissement - cette 0,8 exemple serait cassé les nouvelles versions de la Machine compilateur.

enum TShirtSize {
  Small: 3,
  Medium: 5,
  Large: 8
}

var mySize = TShirtSize.Large;

C'est maintenant une partie de la langue.Voir TypeScriptLang.org > Types de Base > enum pour la documentation sur ce sujet.Un extrait de la documentation sur la façon d'utiliser ces énumérations:

enum Color {Red, Green, Blue};
var c: Color = Color.Green;

Ou avec le manuel de la sauvegarde des numéros:

enum Color {Red = 1, Green = 2, Blue = 4};
var c: Color = Color.Green;

Vous pouvez également revenir à la enum nom en utilisant par exemple Color[2].

Voici un exemple de la façon dont tout cela va ensemble:

module myModule {
    export enum Color {Red, Green, Blue};

    export class MyClass {
        myColor: Color;

        constructor() {
            console.log(this.myColor);
            this.myColor = Color.Blue;
            console.log(this.myColor);
            console.log(Color[this.myColor]);
        }
    }
}

var foo = new myModule.MyClass();

Ce journal:

undefined  
2  
Blue

Parce que, au moment de la rédaction du présent, le Tapuscrit de l'aire de Jeux va générer ce code:

var myModule;
(function (myModule) {
    (function (Color) {
        Color[Color["Red"] = 0] = "Red";
        Color[Color["Green"] = 1] = "Green";
        Color[Color["Blue"] = 2] = "Blue";
    })(myModule.Color || (myModule.Color = {}));
    var Color = myModule.Color;
    ;
    var MyClass = (function () {
        function MyClass() {
            console.log(this.myColor);
            this.myColor = Color.Blue;
            console.log(this.myColor);
            console.log(Color[this.myColor]);
        }
        return MyClass;
    })();
    myModule.MyClass = MyClass;
})(myModule || (myModule = {}));
var foo = new myModule.MyClass();

Juste une autre remarque que vous pouvez une id/string enum avec les éléments suivants:

class EnumyObjects{
    public static BOUNCE={str:"Bounce",id:1};
    public static DROP={str:"Drop",id:2};
    public static FALL={str:"Fall",id:3};


}

Mise à jour:

Comme le fait remarquer @iX3, Tapuscrit 2.4 a l'appui pour enum cordes.

Voir:Créer un enum avec les valeurs de chaîne en caractères d'imprimerie


Réponse originale à cette question:

Pour la Chaîne de valeurs des membres, Tapuscrit permet uniquement de nombres en tant que membre enum valeurs.Mais il existe quelques solutions/hacks que vous pouvez mettre en œuvre;

Solution 1:

copié à partir de: https://blog.rsuter.com/how-to-implement-an-enum-with-string-values-in-typescript/

Il existe une solution simple:Juste lancer la chaîne de caractères littérale à tout avant de l'affecter:

export enum Language {
    English = <any>"English",
    German = <any>"German",
    French = <any>"French",
    Italian = <any>"Italian"
}

solution 2:

copié à partir de: https://basarat.gitbooks.io/typescript/content/docs/types/literal-types.html

Vous pouvez utiliser une chaîne littérale comme un type.Par exemple:

let foo: 'Hello';

Ici, nous avons créé une variable appelée foo qui permettra uniquement à la valeur littérale "Bonjour" lui être attribué.Cela 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 sur leur propre, mais peuvent être combinés dans un type de l'union pour créer un puissant (et utile) de l'abstraction par exemple:

type CardinalDirection =
    "North"
    | "East"
    | "South"
    | "West";

function move(distance: number, direction: CardinalDirection) {
    // ...
}

move(1,"North"); // Okay
move(1,"Nurth"); // Error!

Les Enums en caractères d'imprimerie:

Les énumérations sont mis dans le tapuscrit de la langue de définir un ensemble de nommé des constantes.En utilisant les énumérations peuvent rendre notre vie plus facile.La raison pour cela est que ces constantes sont souvent plus faciles à lire que la valeur de l'enum représente.

La création d'un enum:

enum Direction {
    Up = 1,
    Down,
    Left,
    Right,
}

Cet exemple de la tapuscrit docs explique très bien comment les énumérations de travail.Notez que notre première valeur d'enum (Up) est initialisé à 1.Tous les membres suivants du nombre enum sont ensuite auto incrémenté à partir de cette valeur (c'est à direDown = 2, Gauche = 3, À Droite = 4).Si nous n'avons pas d'initialiser la première valeur avec 1 enum serait de commencer à 0 et incrément automatique (c'est à direDown = 1, Gauche = 2, À Droite = 3).

À l'aide d'un enum:

On peut accéder aux valeurs de l'enum de la manière suivante:

Direction.Up;     // first the enum name, then the dot operator followed by the enum value
Direction.Down;

Notez que de cette façon, nous sommes beaucoup plus descriptif dans la façon d'écrire notre code.Les Enums, fondamentalement, nous empêcher de l'aide des numéros de magie (nombres qui représentent une entité parce que le programmeur a donné un sens dans un certain contexte).Des numéros de magie sont mauvais pour les raisons suivantes:

  1. Nous devons penser plus difficile, nous avons d'abord besoin de traduire le nombre à une entité avant que nous puissions raison au sujet de notre code.
  2. Si nous passons en revue notre code, après un long moment, ou d'autres programmeurs révision de notre code, ils ne savent pas forcément ce que l'on entend avec ces chiffres.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top