TypeScript – Nur ein ECMAScript 6 Lückenbüßer?

Diese berechtigte Frage muss sich TypeScript, das statisch typisierte Superset von JavaScript, gefallen lassen. Schließlich bringt ECMAScript 6, die kommende Version des Standards für JavaScript, viele der in der aktuellen ECMAScript Version 5 vermissten Features mit, welche auch von TypeScript nachgerüstet werden (z.B. klassenbasierte Vererbung und ein Modulsystem). Dabei benötigt ECMAScript 6 keinen Kompilierungsschritt, sondern wird direkt vom Browser verarbeitet.

Auch wenn ECMAScript 6 noch nicht final spezifiziert ist, so rückt dies immer näher. Allmählich tauchen erste Features als Implementierung in den neusten Browserversionen auf – siehe Kompatibilitätsmatrix.

Wird also TypeScript überhaupt gebraucht? Ist es nicht nur eine Übergangslösung?

Tatsächlich soll TypeScript (anders als Ansätze wie beispielsweise Dart) ECMAScript nicht ersetzen. Sich für TypeScript zu entscheiden bedeutet auch, sich für ECMAScript/JavaScript zu entscheiden.

Die Syntax von Modulen und Klassen versucht Microsoft synchron zur ECMAScript 6 Syntax zu halten.
Ziel ist es, dass der TypeScript Compiler – wenn eine ausreichende Browserunterstützung für ECMAScript 6 in den Browsern vorhanden sein wird – die ECMAScript 6 Features nicht mehr (durch Cross-Compilation) nachrüsten muss, sondern den Code einfach als ECMAScript Code unverändert ausgeben kann.
Aber sind wir ehrlich: bis ECMAScript 6 eine ausreichende Browserunterstützung haben wird (je nach Projekt sind natürlich andere Browserversionen spannend), werden noch Jahre vergehen.
TypeScript ist somit in gewissem Maße ein Lückenfüller. Eine eventuelle Migration von TypeScript auf ECMAScript 6 dürfte sich aufgrund der Syntaxähnlichkeit sehr leicht gestalten.

TypeScript hat allerdings auch ein (namensgebendes) Feature zu bieten, welches ECMAScript 6 gänzlich fehlt und auch in Zukunft (bislang) gar nicht zur Diskussion steht: statische Typisierung.
Diese ermöglicht zum einen unmittelbares Feedback bei gängigen Programmierfehlern, zum anderen ist sie die Grundlage für umfassendes Tooling (IDE-Unterstützung, z.B. zuverlässige Autovervollständigung, Refactorings, Code-Navigation) – ein Bereich, in dem JavaScript trotz aller Fortschritte der letzten Jahre große Schwächen hat.
Dieses Feature zahlt sich vor allem für große, komplexe Anwendungen aus – genau diese Entwicklungsprojekte will TypeScript adressieren.

Die Bedenken, dass man durch statische Typisierung die Eleganz von ECMAScript verliert, ist nachvollziehbar. TypeScript schafft es aber, diese Eleganz zu erhalten, u.a. durch den Einsatz eines strukturellen Typsystems statt einem nominellen (wie man es von Sprachen wie Java oder C# kennt).

Ob man auf reines ECMAScript oder auf TypeScript setzen möchte, muss jeder für sich selbst entscheiden. Wer statische Typisierung und das damit verbundene Tooling bisher vermisst hat oder schon heute zukünftige ECMAScript Features auch in älteren Browsern nutzen möchte, für den kann TypeScript ein lohnenswertes Werkzeug sein.

Short URL for this post: http://wp.me/p4nxik-2cw
This entry was posted in Web as a Platform and tagged , , , , . Bookmark the permalink.

2 Responses to TypeScript – Nur ein ECMAScript 6 Lückenbüßer?

  1. Sebastian Basner says:

    Dieselbe Diskussion wird ja bei CoffeeScript auch geführt.
    Für mich sind es Lückenfüller, aber auch die einzige Möglichkeit schnell an moderne Features zu kommen. Muss man je nach Projekt abwägen und diskutieren ob das sinnvoll ist.

  2. Alex says:

    Hauptsache ich bringe mir grad TypeScript bei und dann höre ich, dass ECMAScript6 das auch jetzt alles kann.
    Aber beruhigend dass es noch lange dauert bis das alles Browserkompatibel ist :D

Leave a Reply