11 Punkte von dlwocks31 5 일 전 | Noch keine Kommentare. | Auf WhatsApp teilen

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
    • npx tsgo --version
  • 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.

Noch keine Kommentare.