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.
Du musst angemeldet sein, um einen Kommentar abzugeben.
TypeScript 0.9 ermöglicht dies:
Hinzufügen einer Antwort gibt es neue features für diese beginnend mit TypeScript 1.4;
mit
const enum
geben das erwartete Ergebnis.Dies ist mit einem normalen enum:
Dies ist mit ein const enum:
Diesem blog-post erklärt es mit mehr details : https://tusksoft.com/blog/posts/11/const-enums-in-typescript-1-4-and-how-they-differ-from-standard-enums
Könnte man etwas wie das hier tun:
Denken Sie daran, dass durch design ambient-Angaben haben keine Auswirkung auf die Ausgabe des Codes. Also irgendwo müssen Sie wirklich erklären, die Farbe und die Werte der einzelnen enum-Mitglied.