Dev News Daily ENDE

Angulars Compiler kann TypeScript nicht nach Go folgen

Alex Rickabaugh und Mark Techson haben dargelegt, was TypeScript 7 für Angular bedeutet - und die Antwort ist ein Neubau, kein Update. Angulars Ahead-of-time-Compiler wurde direkt auf den APIs des TypeScript-Compilers errichtet, und das Team sagt unmissverständlich, dass diese Verzahnung mit einem in Go kompilierten TypeScript nicht funktionieren kann: einmal wegen der Kosten des Sprachübergangs, vor allem aber, weil Angular eigene Code-Transformationen über die ts.Transformer-API ausführt, die es sprachübergreifend nicht gibt.

Der Plan, im Frühjahr begonnen, löst die Angular-Kompilierung von diesen APIs vollständig ab. Ein neuer, Angular-eigener Compiler nimmt Komponenten, Direktiven und das Übrige und gibt transformiertes TypeScript aus, das jede Build-Pipeline weiterverarbeiten kann. Als Transformations-Engine dient oxc, die Rust-Toolchain von Void Zero, die bereits Vite antreibt - gewählt wegen einer stabilen API für Parsing, AST-Traversierung, semantische Analyse und Transformation. In der Entwicklung heißt das Werkzeug Angular Preprocessor, ngp, zur Abgrenzung vom heutigen ngc. Es hat zwei Aufgaben - Dekoratoren und Templates in effizienten Laufzeitcode übersetzen und Template-Ausdrücke für den TypeScript-Compiler prüfbar machen - und erzeugt pro Eingabedatei je eine Ausgabedatei für jede Aufgabe.

Angulars Compiler kann TypeScript nicht nach Go folgen
Angulars Compiler kann TypeScript nicht nach Go folgen — Dev News Daily

Was das bedeutet

Der architektonische Punkt überlebt die Sprachwahl. Angular wechselt davon, Teil der Typprüfung zu sein, dazu, Eingaben für sie zu erzeugen - dieselbe Trennung, auf die sich die meisten anderen Frameworks vor Jahren verlegt haben: Code in einem Werkzeug erzeugen, Typen in einem anderen prüfen, und beide Seiten unabhängig austauschbar halten. Dass Angular länger widerstand, ist genau der Grund für den jetzigen Aufwand: die ungewöhnlich tiefe Integration brachte eine Template-Typprüfung, die wenige Konkurrenten erreichten, und kostete die Beweglichkeit, als der Wirt die Implementierungssprache wechselte.

Bei den zwei Sprachen lohnt Genauigkeit, weil die Ankündigung zur Verwechslung einlädt: TypeScript 7 ist der Go-basierte native Compiler, oxc ist Rust. Angular folgt TypeScript nicht nach Go, sondern verlässt dessen Prozess und wählt eine eigene native Toolchain. Damit ist die interessante Zahl für Angular-Nutzer auch nicht der Benchmark von TypeScript 7, sondern was ngp plus eine TypeScript-7-Typprüfung insgesamt kostet - und diese Zahl gibt es öffentlich noch nicht. Bis dahin liegt ein begründeter Plan vor, mit benannter Engine und einem Ausgabevertrag von zwei Dateien pro Quelle, was deutlich mehr ist als bei den meisten Ankündigungen der Form "wir schreiben es in Rust neu".