Webentwicklung: Der neue TypeScript-Compiler in Go

Das TypeScript-Team portiert den Kern der Programmiersprache nach Go. Das macht die Sprache schneller und verbessert die Developer Experience.

vorlesen Druckansicht 20 Kommentare lesen
TypeScript und Go

(Bild: erzeugt mit KI durch iX)

Lesezeit: 17 Min.
Von
  • Sebastian Springer
Inhaltsverzeichnis
close notice

This article is also available in English. It was translated with technical assistance and editorially reviewed before publication.

TypeScript wurde einst aus der Not geboren, um die größten Schwächen von JavaScript auszugleichen. Seit Jahren ist es nun ein nahezu unverzichtbares Werkzeug in der Webentwicklung, das in seiner Entwicklung auf Feature-Ebene immer einen leichten Vorsprung zu JavaScript besitzt.

Microsoft hat kürzlich angekündigt, die Basis von TypeScript vollständig zu überarbeiten – also den Compiler, der TypeScript in JavaScript übersetzt, und weitere Komponenten, die für die Interaktion mit Tools und Entwicklungsumgebungen verantwortlich sind. Dabei hat Microsoft eine für viele überraschende Wahl getroffen. Die meisten haben damit gerechnet, dass, wenn jemand diesen Schritt geht, Rust als Programmiersprache zum Einsatz kommt, denn es gibt bereits populäre Rust-basierte Werkzeuge im JavaScript-Umfeld, etwa den Bundler Rspack.

Sebastian Springer
Sebastian Springer

Sebastian Springer weckt als Dozent fĂĽr JavaScript, Sprecher auf zahlreichen Konferenzen und Autor die Begeisterung fĂĽr professionelle Entwicklung mit JavaScript.

Doch das TypeScript-Team mit Anders Hejlsberg als Lead Architect hat sich stattdessen für eine Reimplementierung in der Sprache Go entschieden. Das Ziel der nativen Implementierung in Go, die kompiliert wird – im Gegensatz zur Just-in-Time-Umwandlung der Skriptsprache TypeScript in Bytecode – ist eine Verbesserung der Ausführungszeit der TypeScript-Werkzeuge sowie eine spürbare Reduzierung des Arbeitsspeicherverbrauchs. Laut aktueller Benchmarks erzielt das neue TypeScript eine zehnfach schnellere Zeit beim Build verschiedener Projekte.

Dieser Artikel widmet sich den Fragen, warum diese Verbesserung so wichtig ist, wo die aktuellen Schwächen von TypeScript liegen und wie die Entwicklung des neuen Compilers, der unter dem Codenamen Corsa und unter der Version TypeScript 7 geführt wird, vonstatten geht.

Videos by heise

Im Jahr 2012 veröffentlichte Microsoft eine erste Version von TypeScript nach zwei Jahren Entwicklungszeit. Seit 2014 wird die Programmiersprache auf GitHub öffentlich einsehbar weiterentwickelt und unterliegt als Open-Source-Projekt der Apache-2.0-Lizenz. Mittlerweise hat TypeScript die Version 5.8 erreicht.

Im Kern ist TypeScript eine Programmiersprache, die JavaScript um Typsicherheit zur Kompilierungszeit ergänzt – mit den Zielen, besser größere Applikationen entwickeln zu können und eine Grundlage für bessere Entwicklungswerkzeuge zu schaffen.

Es gibt eine ganze Reihe von GrĂĽnden, die fĂĽr den Einsatz von TypeScript statt JavaScript sowohl in Frontend- als auch in Backend-Projekten im Web sprechen:

  • Statische Typisierung: JavaScript verfĂĽgt nur ĂĽber ein schwaches Typsystem, das Laufzeitfehler begĂĽnstigt. Mit seiner weitestgehend optionalen statischen Typisierung bietet TypeScript einerseits groĂźe Flexibilität und hilft Entwicklerinnen und Entwicklern auf der anderen Seite dabei, potenzielle Fehler frĂĽhzeitig zu erkennen.
  • Verbesserung der Codequalität: Gerade an Schnittstellen von Modulen in einer Applikation, aber auch bei Bibliotheken, erlaubt TypeScript eine strikte Definition von Schnittstellen, was die Wartbarkeit und Lesbarkeit des Codes deutlich verbessert. Das kommt vor allem größeren Projekten und wiederverwendbaren Bibliotheken zugute.
  • WerkzeugunterstĂĽtzung: Zahlreiche Werkzeuge im JavaScript-Ă–kosystem setzen auf TypeScript, um Entwicklern eine bessere Hilfestellung zu leisten. So können Entwicklungsumgebungen wie Visual Studio Code bei der Entwicklung einer Node.js-Applikation deutlich besser helfen, wenn die Typdefinitionen von Node.js installiert sind, insbesondere in Bezug auf die Autovervollständigung von Code und die Anzeige von Funktionssignaturen.
  • Polyfills: TypeScript unterstĂĽtzt moderne Features aus dem ECMAScript-Standard sehr frĂĽh und noch bevor die meisten Umgebungen wie Browser die Features flächendeckend integrieren. TypeScript kann verschiedene ECMAScript-Versionen als Ausgabe zu erzeugen und unterstĂĽtzt damit auch ältere Umgebungen. Diese Möglichkeit reicht zurĂĽck bis zur Version ECMAScript 3 (diese Version des JavaScript-Standards wurde im Jahr 1999 veröffentlicht).
  • Strukturierte Entwicklung: Zusätzlich zum Standard-JavaScript und der Typsicherheit fĂĽhrt TypeScript weitere Konstrukte wie Interfaces, Enums und Generics ein, die es erlauben, Datenstrukturen und Schnittstellen besser zu modellieren. Einige objektorientierte Designpatterns sind in nativem JavaScript nicht oder nur mit zusätzlichem Aufwand umsetzbar. Das Vorhandensein von Interfaces erleichtert hier die Arbeit erheblich.
  • Strikte Umgebung: TypeScript ermöglicht es ĂĽber Konfigurationsoptionen wie strictNullChecks, häufig auftretende Fehler von vornherein zu vermeiden.
  • Framework- und Bibliotheksintegration: Viele Frameworks und Bibliotheken im JavaScript-Ă–kosystem sind entweder direkt in TypeScript umgesetzt oder bringen zumindest Typdefinitionen mit, sodass sie sich nahtlos in eine TypeScript-Umgebung integrieren und alle Vorteile ausspielen können.

Was bemerkenswert ist: TypeScript ist (noch) vollständig in TypeScript programmiert. Der Kern der Programmiersprache wird auch in Version 6 noch in TypeScript weitergeführt. Parallel dazu arbeitet das Team an Version 7, die dann die Go-Variante sein und die TypeScript-Implementierung ablösen wird, sobald die beiden Projekte eine Feature-Gleichheit erreicht haben. Der aktuelle Zeitplan des Entwicklungsteams sieht für Mitte des Jahres 2025 eine vollwertige Version des Kommandozeilen-Compilers vor, der in der Lage ist, die Typüberprüfung und Übersetzung von Quellcode durchzuführen.

Momentan funktioniert der TypeScript-Go-Compiler bereits nahezu vollständig für reinen TypeScript-Code. Was noch fehlt, ist die Unterstützung von JavaScript, JSDoc und JSX. Ende des Jahres 2025 wird eine Feature-vollständige Version erwartet, die Projekte bauen kann. Außerdem soll mit dem Language Service eines der wichtigsten Entwicklungsfeatures verfügbar sein.

Warum aber ist ein so drastischer Schritt wie ein Rewrite in einer anderen Programmiersprache überhaupt erforderlich? TypeScript spielt seine Vorteile vor allem in größeren Applikationen aus. Mit wachsender Codebasis wächst jedoch auch der Ressourcenbedarf von TypeScript beim Type Checking und beim Build. Das führt zum einen dazu, dass das Öffnen eines Projekts in der Entwicklungsumgebung lange dauert, da der Code hier durch den Language Service initial verarbeitet wird. Und auch der Build einer größeren Applikation kann sehr zeitintensiv werden. Zur reinen Laufzeit kommt noch ein weiteres, sogar noch größeres Problem durch den hohen Bedarf an Arbeitsspeicher. Dieser kann zu Speicherproblemen und im schlimmsten Fall zu Abstürzen durch Out-of-Memory-Fehlern führen.

JavaScript-Konferenz von Heise: enterJS 2025
Enterprise-JavaScript-Konferenz enterJS 2025, 7. und 8. Mai in Mannheim

(Bild: WD Ashari/Shutterstock.com)

Die enterJS 2025 findet am 7. und 8. Mai in Mannheim statt. Die Konferenz bietet einen umfassenden Blick auf die JavaScript-gestĂĽtzte Enterprise-Welt. Der Fokus liegt nicht nur auf den Programmiersprachen JavaScript und TypeScript selbst, sondern auch auf Frameworks und Tools, Accessibility, Praxisberichten, UI/UX und Security.

Highlights aus dem Programm:

Tickets sind im Online-Shop erhältlich.