TypeScript ist eine strenge Obermenge von ECMAScript 2015 und hat bereits eine Decorator-Unterstützung. Bedeutet dies, dass mit der Einführung von ECMAScript 2016-Dekoratoren TypeScript-Dekoratoren überflüssig werden oder bedeutet das, dass TypeScript seine zugrunde liegende Implementierung ändern muss, um ECMAScript 2016-Dekoratoren zu erzeugen?Machen ECMAScript-Dekoratoren TypScript-Dekoratoren überflüssig?
Antwort
Wie es heißt, in den docs regarding decorators:
Dekorateure sind eine experimentelle Funktion, die
in Zukunft Versionen ändern kann
Typoskript können Sie zukünftige Funktionen nutzen, die noch nicht in allen js umgesetzt werden Umgebungen durch Kompilieren der Ausgabe in js, die der Zielumgebung entspricht.
So zum Beispiel diese:
function deco(constructor: Function) { }
@deco
class A { }
Compiliert in:
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
function deco(constructor) { }
var A = (function() {
function A() {
}
return A;
}());
A = __decorate([
deco
], A);
Wie Sie die js Version enthält alles sehen kann, die erforderlich ist, damit es funktioniert.
Wenn sich etwas ändert, dann ja, der Compiler ändert sich, um die richtige js auszugeben.
Siehe Ich verstehe kein bisschen von dem generierten Code '__decorate', wenn die Underling-Implementierung für transpiler geändert wird, würde Code definitiv für Leute wie mich lesbarer werden, obwohl nicht sicher, dass reablity überhaupt ein Grundsatz des transpilers ist und thay würde es vorziehen, weiterhin den gleichen Weg zu generieren, bis etwas kaputt geht. – ishandutta2007
Die kompilierte js soll nicht lesbar sein, es soll arbeiten und so wenig Fußabdruck wie möglich haben. Sie sollten die kompilierte js nicht selbst ändern, und Sie sollten darauf vertrauen, dass der Compiler den richtigen Code basierend auf dem von Ihnen angegebenen Ziel ausgibt. –
@ ishandutta2007 Ich denke, was Sie fragen ist, ob TS Dekorateure schließlich zu ES Dekoratoren kompilieren werden. Das ist eine faire Frage, ich glaube nicht, dass wir die Antwort darauf wissen, aber ich würde erwarten, dass dies wahrscheinlich ist. Es gibt bereits 'ES2016, ES2017, ESNext' Ziele, aber ich weiß nicht, ob der Compiler für diese Ziele (noch) ES-Dekorierer ausgibt, noch weiß ich, ob sie zu diesem Zeitpunkt überhaupt kompatible Spezifikationen sind. Ich würde das auch gerne wissen! – Aaron
- 1. Wird dies die Verwendung von StringBuilder überflüssig machen?
- 2. Wird WebAssembly die Audio-API und WebGL überflüssig machen?
- 3. MSIL: Überflüssig Zweig
- 4. Sind Applikationstransformatoren wirklich überflüssig?
- 5. Macht ES6 benannte Funktionsausdrücke überflüssig?
- 6. Macht PEP 412 __slots__ überflüssig?
- 7. Sind Roslyns ".WithFooToken()" -Aufrufe überflüssig?
- 8. Wie zu beheben Initialisierer in Java überflüssig?
- 9. PHP Entfernen überflüssig Arrays von Arrays
- 10. Warum numpy.array() auf numpy.arange() verwenden? Ist das nicht überflüssig?
- 11. Die Bedingung in Conad Barskis Lispfunktion ist überflüssig?
- 12. Werden die adaptiven Funktionen von Oracle12c Optimizer überflüssig?
- 13. Sind Variablenbezeichner am Ende des Tages völlig überflüssig?
- 14. Warum benötigt Swift diese ähnlichen Funktionen? Ist es irgendwie überflüssig?
- 15. Macht IBM Bluemix die Wartung von Servern überflüssig?
- 16. Ist eine PHP-Schnittstelle für Apps, die von einem einzelnen Entwickler erstellt wurden, überflüssig?
- 17. Was ist der "leichtere Weg", der die Notwendigkeit von Data.Conduit.Utils Zip überflüssig macht?
- 18. Warum sagt ReSharper 'Catch-Klausel mit einzelner' throw 'Anweisung ist überflüssig'?
- 19. Ist das Entkoppeln von Web- und Datenbankebenen über MSMQ notwendig oder überflüssig?
- 20. überflüssig Stamm Unterordner in SVN-Tag erstellt, wenn mit Maven aus Bambus
- 21. Sind die Erwartungen überflüssig, wenn ich in meinem Test Verifizierungen habe?
- 22. machen Sie einen GET-Anruf 100.000 mal
- 23. Gibt es Vorteile, Unbefugter-durch-Cancan-Aktionen auf der Controller-Ebene zu testen, oder ist das überflüssig?
- 24. JNI und Java: Ameise anrufen machen oder Anruf ameise machen?
- 25. machen teilweise vs Vorlage vs machen vs Ausbeute
- 26. Vim rückgängig machen: Änderungen nach dem Schreiben rückgängig machen
- 27. Einen Wert von db zugänglich machen systemweit in Laravel machen
- 28. Machen Sie Formularhöhe größer und machen Text fit in Box
- 29. Animation auf sIFR3 machen
- 30. Machen Sie Radiobuttons
Solange 90% der Zeit, die Sie ES5 generieren, interessieren Sie sich nicht wirklich ... Sowohl es2016 als auch Typescript werden in etwas anderes umgewandelt werden – smnbbrv
true, aber ich spreche über die Zeit, wenn Typoskript nicht mehr generiert ES5. – ishandutta2007
Dekorierer sind kein Bestandteil von ES2016. –