201202Okt

TypeScript: JavaScript-Erweiterung von Microsoft

JavaScript erlebt schon seit einiger Zeit einen Umbruch, da es durch Frameworks, Echtzeit-Interpreter und die serverseitige Verwendung auch für größere Webanwendungen wesentlich attraktiver geworden ist. Google versucht mit seiner eigenen Programmiersprache Dart dem Grundprinzip von JavaScript entgegenzuwirken. Allerdings ist die browserseitige Integration von Dart noch offen und wird nicht von allen Browserherstellern gleichermaßen angenommen. Da Dart aber auch auf dem Server ausgeführt werden kann, dürfte dieser Aspekt für Entwickler eher unwichtig sein.
Einen anderen Weg geht hier Microsoft: Wie gestern in einem Blog-Eintrag verkündet wurde, stellt Microsoft mit TypeScript ab sofort ein JavaScript-Superset zur Verfügung, das mit Node.js auf dem Server interpretiert werden kann. Bei TypeScript handelt es sich also um eine Alternative zu CoffeeScript oder LiveScript. TypeScript bietet bessere alternative Möglichkeiten zur objektorientierten Programmierung (Klassen, Kapselung, etc.), Typenüberprüfung und spezielle Schnittstellen.

TypeScript

Der Vorteil an TypeScript ist, dass sich bestehender JavaScript-Code weiterhin verwenden lässt und die TypeScript-Schreibweise optional ist. Zudem ist es durch sogenannte "Declare"-Dateien möglich, auf bestehenden Code (und damit auch auf JavaScript-Frameworks) zurückzugreifen. TypeScript ist Open-Source und kann auch als Visual Studio-Plugin heruntergeladen werden.

Kommentare

1UnitedPower schrieb am 09.10.2012 #1

Hallo Matthias,
du schreibst: "TypeScript bietet bessere Möglichkeiten zur objektorientierten Programmierung (Klassen, Kapselung, etc.)". Das erweckt den Eindruck, dass die bisherige Umsetzung von Objektorientiertheit in Javascript mangelhaft sei. Da muss ich dir widersprechen; Prototypbasierte Objektorientiertheit ist die abstraktere Umsetzung dieses Programmierparadigmas und Abstraktion ist in der Programmierung doch immer erstrebenswert. Mit Prototyping lassen sich immerhin klassenorientierte Ansätze leicht nachbasteln, wohingegen der umgekehrte Weg sich um einiges schwieriger erweist.
Weiterhin ist auch Datenkapselung in JS mittels Function-Scope und dem this-Binding meiner Meinung nach wesentlich eleganter gelöst als in manch anderer Sprache.
Das Problem von Javascript ist, dass die Syntax für völlig unterschiedliche Prinzipien, der aus herkömmlichen Programmiersprachen zu sehr ähnelt und den Programmierer oft darin hindert die Sprache wirklich zu lernen.
Ich möchte mit diesem Beitrag nicht die Qualität von TypeScript anzweifeln, noch dein Wissen im Umgang mit Javascript in Frage stellen, aber ich möchte fairer Weise für die "meist mißverstandene Programmiersprache der Welt" ein faires Wort auf deinem Blog und vor deinen Lesern einlegen.

liebe Grüße
ein begeisteter Leser
1UnitedPower

Matthias schrieb am 09.10.2012 #2

Deinen Punkten habe ich nichts entgegenzusetzen und ich selbst schätze und liebe JavaScript so, wie es ist :) Ich hatte schon einmal auf einen Beitrag die Antwort erhalten, dass JavaScript mit seiner prototypbasierten Objektorientierung doch elegeanter sei und man es nur richtig umsetzen müsse. Ich selbst habe eigentlich nie etwas Anderes behauptet und arbeite fast ausschließlich damit. Ich versuche nur, einen Vergleich mit beispielsweise ActionScript oder PHP zu ziehen, da hier Bereiche wie Typsicherheit oder Klassen ihre Vorteile zeigen. Das Kapseln in JavaScript durch Closures ist natürlich schnell und effektiv, aber ich finde gerade in größeren Anwendungen kann es schnell unübersichtlich werden. Dennoch lassen sich mit JavaScript durch seine Dynamik schnell Ergebnisse erzielen und ich freue mich daher auch eher auf Harmony als auf externe Erweiterungen der Skriptsprache.
Ich sehe die Kritik als konstruktiv und habe die Bezeichnung "besser" auf "alternativ" im Beitrag geändert ;)