Soll ich Typoskript verwenden? oder kann ich nur ES6 verwenden? [geschlossen]

286

Mein täglicher Job ist Client-Entwickler, der AngularJS verwendet. Wir prüfen, ob wir mit TypeScript arbeiten möchten. Ich habe einige Nachforschungen über Typoskript angestellt und fast jedes JavaScript-Paket, das ich benötige, muss Definitionstypdateien haben. Ich fand das nicht sehr praktisch, besonders wenn ich etwas Neues ausprobieren möchte und sie nicht die Definition dafür haben. Es ist wirklich frustrierend. (Selbst die aktuelle jQuery-Definition gibt mir einige Probleme, wenn ich Typoskript 1.5 Beta verwenden möchte). Ich habe angefangen, mir ES6 anzuschauen, und es sieht ähnlich aus wie TypeScript. Sollte ich stattdessen nur ES6 verwenden? Ich habe auch gehört, dass Angular 2 TypeScript voll unterstützen wird. Ist das ein Grund, warum ich dabei bleiben sollte?

cjskywalker
quelle
11
Sie benötigen nicht jedes Mal eine Definitionsdatei für etwas Neues. Wenn Sie eine Bibliothek ohne Typ verwenden möchten, die Sie schreiben können, declare var MyNewLibraryName: any;verwenden Sie sie nach Belieben, ohne dass sich der Compiler beschwert.
David Sherret
2
Mit den Stimmen zum Schließen dieser Frage würde ich vorschlagen, mehr Vor- und Nachteile der einzelnen Ansätze zu erfragen, anstatt zu fragen, welche die besten sind. Auf diese Weise fragen Sie nach Informationen und nicht nach Meinungen.
Brocco
Typoskript aktualisiert die neue Version von Javascript vor allen gängigen Browsern. Meine Option besteht darin, Typoskript zu verwenden und eine Javascript-Version basierend auf Ihren Zielbrowsern zu kompilieren. (Natürlich ist es sogar einfach, Javascript von einer Version in eine andere zu transpilieren)
Bhv
Wenn Sie sich nicht darum kümmern, Ihren Code richtig fusseln zu können, und Sie möchten, dass Immutable.js wirklich schwer zu bearbeiten ist, und Sie es lieben, Boilerplate zu schreiben, und Sie denken, DRY ist überbewertet und Sie bevorzugen es tatsächlich, sich selbst und Sie zu wiederholen Schreiben Sie gerne Typdefinitionen für den Code anderer Personen, und Sie verwalten gerne Typen, wenn sie sich unter Ihnen ändern, und Sie wechseln gerne zwischen zwei verschiedenen Texteditoren, da nichts da draußen ordnungsgemäß funktioniert. Wählen Sie dann Typescript. Aber wenn Sie gesund sind, wählen Sie ES6 / 7 und Babel.
gigantisch

Antworten:

114

Ich verwende Typescript seit ungefähr anderthalb Jahren in meinem aktuellen Winkelprojekt, und obwohl es hin und wieder einige Probleme mit Definitionen gibt, leistet das DefinitelyTyped- Projekt hervorragende Arbeit, um mit den neuesten Versionen der beliebtesten Bibliotheken Schritt zu halten.

Allerdings gibt es beim Übergang von Vanille-JavaScript zu TS eine bestimmte Lernkurve, und Sie sollten die Fähigkeit von Ihnen und Ihrem Team berücksichtigen, diesen Übergang durchzuführen. Wenn Sie Angular 1.x verwenden, müssen Sie die meisten Beispiele, die Sie online finden, von JS in TS übersetzen. Insgesamt gibt es derzeit nicht viele Ressourcen für die gemeinsame Verwendung von TS und Angular 1.x. .

Wenn Sie vorhaben, Winkel 2 zu verwenden, gibt es viele Beispiele für die Verwendung von TS, und ich denke, das Team wird weiterhin den größten Teil der Dokumentation in TS bereitstellen, aber Sie müssen TS sicherlich nicht verwenden, um Winkel 2 zu verwenden.

ES6 hat einige nette Funktionen und ich persönlich habe vor, mich damit vertraut zu machen, aber ich würde es an dieser Stelle nicht als produktionsbereite Sprache betrachten. Hauptsächlich aufgrund mangelnder Unterstützung durch aktuelle Browser. Natürlich können Sie Ihren Code in ES6 schreiben und einen Transpiler verwenden, um ihn auf ES5 zu bringen. Dies scheint derzeit die beliebteste Vorgehensweise zu sein.

Insgesamt denke ich, dass die Antwort darauf zurückzuführen ist, was Sie und Ihr Team gerne lernen. Ich persönlich denke, dass sowohl TS als auch ES6 eine gute Unterstützung und eine lange Zukunft haben werden. Ich bevorzuge jedoch TS, da Sie dazu neigen, Sprachfunktionen schneller zu erhalten, und im Moment ist die Werkzeugunterstützung (meiner Meinung nach) etwas besser.

Kent Cooper
quelle
40
ES6 hat keine Browser-Unterstützung? Sind Sie ein MS-Politiker? Sowohl Typoskript als auch ES6 benötigen einen Transpiler. Bedeutet, dass Sie TS oder ES6 nicht im Web ausführen, sondern etwas wie Babel verwenden. TS in Angular 2 wurde nur für ein politisches Unentschieden zwischen Google und MS
STEEL
40
@STEEL Nein, kein MS-Politiker. Sie antworten nur auf eine Antwort, die ich vor über einem Jahr hinterlassen habe, als die ES6-Unterstützung sehr begrenzt war. Es steht Ihnen frei zu glauben, dass die Entscheidung für TS und Angular 2 politisch war, aber das ändert nichts an meinem Standpunkt, dass sie für diese Sprache geschrieben wurde und das Angular2-Team ihre Verwendung fördert.
Kent Cooper
18
Dies ist von vor 2 Jahren, aber die Zeit hat gezeigt, wie sich der Standard letztendlich durchsetzt. ES6 wird heutzutage von den meisten Browsern von Haus aus stark unterstützt. Klassen, Pfeilfunktionen usw. Irgendwann werden wir einen Punkt erreichen, an dem Browser von Haus aus eine ausreichend gute Version von Javascript unterstützen, um Transpiler unnötig zu machen. Typoskript erfordert immer einen Transpiler. Warum ist das wichtig? weil es unsere Pflicht als Webentwickler ist, das Web voranzutreiben, und das durch die Unterstützung der Standards
monzonj
3
Es ist ein Mist, dass ES6 die tatsächliche Sicherheit vom Typ "Kompilierungszeit" nicht unterstützt. Es gibt eine Menge großartiger Dinge in ES6, aber die Tatsache, dass ich nicht sagen kann, dass dieses Argument eine Zeichenfolge (oder eine Instanz der Klasse X) ist, verdammt noch mal, und dass ich dies als Teil Ihres Erstellungsprozesses überprüfen lassen kann, ist immer noch schlecht für große Programme (Frontend und Backend gleichermaßen).
Brad Peabody
Sie können ein Tool wie Flow Type verwenden , um ES6 Typunterstützung hinzuzufügen, wenn Sie dies wirklich möchten. Bis ES6 in allen Browsern allgegenwärtig wird, besteht Ihre Toolchain dann aus Flow-> ES6-> Babel, was eine Menge Indirektion ist, aber den Job macht und ich denke, dass es derzeit eine sehr beliebte Kette ist.
Prahlad Yeri
660

Entscheidungsbaum zwischen ES5, ES6 und TypeScript

Stört es Sie, einen Build-Schritt zu haben?

  • Ja - Verwenden Sie ES5
  • Nein - mach weiter

Möchten Sie Typen verwenden?

  • Ja - Verwenden Sie TypeScript
  • Nein - Verwenden Sie ES6

Mehr Details

ES5 ist das JavaScript, das Sie heute im Browser kennen und verwenden. Es ist das, was es ist, und erfordert keinen Build-Schritt, um es in etwas umzuwandeln, das in den heutigen Browsern ausgeführt wird

ES6 (auch genannt ES2015 genannt ) ist die nächste Iteration von JavaScript, wird jedoch in heutigen Browsern nicht ausgeführt. Es gibt einige Transpiler, die ES5 exportieren, um es in Browsern auszuführen. Es ist immer noch eine dynamische (gelesen: untypisierte) Sprache.

TypeScript bietet ein optionales Typisierungssystem, während Funktionen aus zukünftigen Versionen von JavaScript (ES6 und ES7) abgerufen werden.

Hinweis: Mit vielen Transpilern (z. B. Babel, TypeScript) können Sie Funktionen aus zukünftigen Versionen von JavaScript heute verwenden und Code exportieren, der in den heutigen Browsern noch ausgeführt wird.

Brocco
quelle
5
Es ist nicht so einfach. Es gibt viele andere Faktoren.
RaoulRubin
16
@ RaoulRubin Das stimmt, es gibt viele andere Faktoren, aber für eine geschlossene Frage hier bietet es zumindest einen Ausgangspunkt für den Entscheidungsprozess
Brocco
1
PS - ES6 + FlowType = Liebe :)
Red2678
3
@ RavinderPayal hat eine interessante Frage, Brocco. Was ist aus Marktsicht der Wert von TS gegenüber es5 oder es6 und ähnlichen Dingen?
J. Wells
3
Ok, dieser Beitrag ist ein paar Jahre alt. Lassen Sie uns auf den heutigen 28. September 2017 vorspulen. Unterstützen die meisten Browser ES6?
Dewey Banks