10 Punkte von GN⁺ 2025-05-25 | 3 Kommentare | Auf WhatsApp teilen
  • Die Preview von „tsgo“, dem Projekt Corsa zur Portierung des TypeScript-Compilers als Go-basiertes Native-Binary, wurde über npm veröffentlicht
  • Eine Folgeankündigung zu 10x faster TypeScript, das im März für Aufmerksamkeit sorgte
  • Gegenüber dem bisherigen tsc wurde eine mehr als 10-fache Geschwindigkeitssteigerung erreicht, außerdem werden JSX sowie JS-Dateien auf Basis von JSDoc unterstützt
  • Eine Native-Preview-Erweiterung für VS Code wurde ebenfalls veröffentlicht, Autovervollständigung, Referenzen suchen usw. sind jedoch noch in Entwicklung
  • Eine neue Native-API und ein LSP-basierter Sprachserver sind ebenfalls in Vorbereitung, zudem wird das Rust-basierte Node-Modul libsyncrpc eingeführt
  • Einige Funktionen sind noch nicht implementiert, zudem bestehen klare Unterschiede zwischen TypeScript 7 (Corsa) und dem bisherigen 5.8 (Strada)

Überblick über TypeScript Native Preview

  • Die Preview des TypeScript-Native-Portierungsprojekts (Corsa), das im März 2025 angekündigt wurde, ist veröffentlicht worden
  • Im Vergleich zur bisherigen JS-basierten Codebasis (Strada) erzielt das in Go geschriebene tsgo durch Parallelität und die Nutzung gemeinsamen Speichers bei großen Projekten eine mehr als 10-fache Leistungssteigerung
  • tsgo soll künftig tsc ersetzen, wird derzeit aber noch als separates npm-Paket bereitgestellt
    npm install -D @typescript/native-preview  
    npx tsgo --project ./src/tsconfig.json  
    

VS-Code-Erweiterung

  • Veröffentlichung der VS-Code-Erweiterung „TypeScript (Native Preview)

  • Nach der Installation ist eine Aktivierung über die Befehlspalette oder die Einstellungen erforderlich

    "typescript.experimental.useTsgo": true  
    
  • Derzeit ist sie noch auf die bestehende Erweiterung angewiesen und funktional eingeschränkt, soll aber kontinuierlich verbessert werden

Release-Zyklus und Entwicklungs-Roadmap

  • Diese Preview soll sich künftig zur offiziellen Version von TypeScript 7 weiterentwickeln
  • Die Auslieferung erfolgt als Nightly-Build, mit automatischen Updates
  • Einige Funktionen werden noch nicht unterstützt:
    • --build, --declaration, Emit für niedrigere Targets
    • Editor-Funktionen: Autovervollständigung, Referenzen suchen, Umbenennen usw.

Wichtige Aktualisierungen

Verbesserte Vollständigkeit der Typprüfung

  • Die meisten Funktionen der Typprüfung wurden bereits portiert
  • JSX sowie JavaScript-Typprüfung mit JSDoc werden nun ebenfalls unterstützt
  • Durch einige beabsichtigte Änderungen und Unterschiede bei lib.d.ts können Fehler abweichen

Unterstützung für JSX-Typprüfung

  • JSX konnte anfangs nur geparst werden, unterstützt nun aber vollständige Typprüfung
  • Beispiel: Im Sentry-Projekt benötigt tsc 72 Sekunden, tsgo 6,7 Sekunden, also eine mehr als 10-fache Beschleunigung
    tsgo -p . --noEmit --extendedDiagnostics  
    

Typprüfung für JavaScript-Dateien

  • Auch die Analyse von JS-Dateien auf Basis von JSDoc wurde im Native-Code neu implementiert
  • Sie wurde gegenüber dem bisherigen Ansatz auf eine modernere und konsistentere Weise refaktoriert
  • Einige ältere Muster werden möglicherweise nicht mehr erkannt

Editor-Funktionen (LSP-basiert)

  • Statt des bisherigen TSServer wird ein LSP-basierter Sprachserver neu entwickelt
  • In der ersten Version werden Fehleranzeige, Gehe zu Definition und Hover unterstützt
  • Kürzlich wurde auch die Funktion Autovervollständigung (completion) hinzugefügt

Stand der API-Entwicklung

  • Eine IPC-basierte API-Schicht befindet sich in Implementierung
  • Damit können verschiedene Sprachen mit dem TypeScript-Prozess kommunizieren
  • Für synchrone Kommunikation in Node.js wird das Rust-basierte Modul libsyncrpc eingeführt
  • Das API-Design befindet sich noch in einer frühen Phase, Feedback wird aktiv aufgenommen

Unterschiede zum bisherigen TypeScript

  • Durch einige Konfigurationsunterschiede können in bestehenden Projekten Fehler auftreten:

    • Beispiel: --moduleResolution: node → empfohlen werden bundler oder nodenext
      {  
        "compilerOptions": {  
          "module": "preserve",  
          "moduleResolution": "bundler"  
        }  
      }  
      
  • Weitere Unterschiede:

    • JSX-Emit kann nur beibehalten werden
    • Declaration-Emit wird nicht unterstützt
    • --build wird nicht unterstützt
    • Sprachdienste für Projekt-Referenzen sind noch unvollständig

Ausblick

  • Bis Ende des Jahres sollen --build sowie die meisten Kernfunktionen im Editor implementiert werden
  • Über den Entwicklungsfortschritt soll fortlaufend im Blog und über Nightly-Releases informiert werden

3 Kommentare

 
riki3 2025-05-25

Ich nutze die LSP, die ich direkt selbst gebaut habe. Nach dem Wechsel zu Go merkt man sofort deutlich, dass der Ressourcenverbrauch gesunken ist.

 
cnaa97 2025-05-25

Heutzutage ist es in Mode, JavaScript einfach nach Rust / Go zu verlagern, nur um die Performance zu verbessern.

 
click 2025-05-25

Beim Refactoring kam es ziemlich oft vor, dass das Parsing des Codes auf tsserver-Seite so langsam wurde, dass der Editor komplett eingefroren ist. Hoffentlich erscheint das schnell, damit wir von diesem Leid befreit werden.