TypeScript 7.0 Beta veröffentlicht – durch native Portierung nach Go etwa 10-mal schneller bei TS
- Neue native Implementierung, die den bestehenden TypeScript-Compiler nach Go portiert
- Obwohl als „Beta“ bezeichnet, wird betont, dass sie bereits stabil genug für den direkten Einsatz im Alltag und in CI ist
- Die neue Codebasis ist kein Rewrite, sondern eine systematische Portierung der bestehenden Implementierung
- Die Typprüfung ist strukturell identisch mit TypeScript 6.0
- Gegenüber TypeScript 6.0 teilweise etwa 10-mal höhere Performance
- Basierend auf der Performance von nativem Code und Parallelisierung mit Shared Memory
- Wird bereits in Codebasen mit Millionen von LOC innerhalb und außerhalb von Microsoft eingesetzt
- Vorabtests mit Bloomberg, Canva, Figma, Google, Linear, Notion, Slack, Vercel und weiteren
- Nicht nur die CLI, sondern auch die Editor-Erfahrung wurde leichter und schneller gemacht
Verwendung
- Derzeit als separates Paket zu installieren
npm install -D @typescript/native-preview@beta
- Statt des bisherigen
tsc wird tsgo ausgeführt
- Künftige stabile Versionen sollen wieder über das Paket
typescript und den Entry Point tsc ausgeliefert werden
Parallele Nutzung mit TypeScript 6.0
- 7.0 Beta wird als
@typescript/native-preview + tsgo bereitgestellt
- Der bisherige
tsc und tsgo können nebeneinander ausgeführt und verglichen werden
- In der stabilen Version wird TS7 den Namen
tsc wieder verwenden
- Ein Paket
@typescript/typescript6 für TS6-Kompatibilität wird ebenfalls angeboten
- Bestehende Tools, die auf die TypeScript-API angewiesen sind, können vorerst weiter mit der TS6-API betrieben werden
Wichtige Einschränkungen
- 7.0 Beta ist zwar nahe an production-ready, verfügt aber noch nicht über eine stabile programmgesteuerte API
- Eine stabile API wird frühestens ab TypeScript 7.1 erwartet, Ziel ist in einigen Monaten
- Bei Tools/Plugins, die direkt von der TypeScript-API abhängen, ist beim Umstieg Vorsicht nötig
Parallelisierung
- Mehrere Phasen wie Parsing, Typprüfung und Emit werden parallelisiert
- Neue Option
--checkers zum Anpassen der Anzahl der Typprüfungs-Worker
- Neue Option
--builders zur Parallelisierung von Project-Reference-Builds
- Neue Option
--singleThreaded für die Ausführung in einem einzelnen Thread
- Besonders wirksam bei großen Codebasen und Monorepos, allerdings kann mit höherer Parallelität auch der Speicherverbrauch steigen
Kompatibilität auf Basis von TypeScript 6.0
- TypeScript 7.0 zielt auf Kompatibilität mit dem Verhalten der Typprüfung und CLI von TypeScript 6.0
- Code, der unter TS6 sauber kompiliert, soll auch unter TS7 unverändert kompilieren
- Gleichzeitig werden jedoch neue Standardwerte und die Bereinigung veralteter Funktionen aus TS6 übernommen
- Änderungen bei Standardwerten wie
strict, module, rootDir und types können in bestehenden Projekten spürbar sein
- Besonders Änderungen bei
rootDir und types sollten bei der Migration geprüft werden
- Für Projekte mit alten Target-/Modul-Einstellungen oder veralteten Optionen wird empfohlen, zuerst den Wechsel auf TS6 zu vollziehen
Änderungen bei JavaScript/JSDoc
- Die Unterstützung für JS wurde so überarbeitet, dass sie stärker mit der Analyse von TypeScript-Dateien konsistent ist
- Einige Sonderbehandlungen für JSDoc-/Closure-Stil-Syntax und ältere JS-Muster wurden entfernt
- Codebasen auf Basis von JS + JSDoc sollten daher gesondert überprüft werden
Editor-Unterstützung
- Erweiterung TypeScript Native Preview für VS Code verfügbar
- Da sie auf derselben Grundlage wie die CLI basiert, gelten dieselben Performance-Verbesserungen auch im Editor
- Unterstützt unter anderem Auto-Import, Hover, Inlay Hints, Code Lens und JSX Linked Editing
- Durch die LSP-Basis auch leicht in anderen modernen Editoren und Tools nutzbar
Ausblick
- Eine effizientere Implementierung von
--watch ist geplant
- Arbeiten an Parität beim Declaration Emit für JS-Dateien sind vorgesehen
- Lücken bei Editor-Funktionen sollen geschlossen werden
- Eine stabile programmgesteuerte API kommt nach TypeScript 7.1
- Die stabile Version von TypeScript 7.0 ist in etwa 2 Monaten geplant
- Die RC soll einige Wochen davor veröffentlicht werden
Noch keine Kommentare.