Gibt es eine Möglichkeit zu schaffen, Enumerationen, die im Typoskript, die Umgebungstemperatur sind?

Bearbeiten nach dem release von typescript 0.9: enums werden nun unterstützt:

enum Select { every, first, last }

ursprünglichen Frage:

Enumerationen, die im Typoskript wurden hier diskutiert, aber keine Lösung führt zu einer ambient design. Ein ambient-enum-definition würde bedeuten, dass die enum erfolgt durch den compiler nur an, und die kompilierte js output-Dateien nur mit dem reinen numerischen Werte. Wie in C++11.

Die nächsten die ich bekomme, ist

declare var Color = { red: 1, blue: 2, green: 3 } //DOES NOT COMPILE

aber der compiler akzeptiert dies nicht: "Umgebungs-variable können keine Initialisierer haben".

Bearbeiten

die Einbeziehung dmck Antwort:

declare var Color: { Red: number; Green: number; Blue: number; };

Dieser Ausgabe beliebiger js-code. In anderen Worten, es ist ambient. Dies macht ihn jedoch nutzlos sowie:

declare var Color: { Red: number; Green: number; Blue: number; };

function test() {
  var x = Color.Blue;    //null ref exception, no Color object
  console.log(x == Color.Red);
}

produziert einen runtime error, als Farbe definiert ist, nicht in js. Die ts-Deklaration nur behauptet, dass es das Color-Objekt in js, während in der Tat, ohne definition, es gibt keine. Ti-fix-so können wir hinzufügen

var Color = {
   Red: 1,
   Green: 2,
   Blue: 3
};

aber jetzt die enum-Implementierung ist nicht "ambient" in dem Sinne, dass der typescript-compiler macht das, was ein C++ compiler hat, die Verringerung der enum-Werte aller occurencies, um nüchterne zahlen. Die aktuelle ambient-Deklarationen ermöglichen die überprüfung von Typ, aber nicht solche Ersatz.

InformationsquelleAutor citykid | 2013-04-05
Schreibe einen Kommentar