TypeScript 7’s neuer Go-basierter Compiler, tsgo, führt bereits zu Problemen bei beliebten Entwicklungswerkzeugen wie ESLint, ts-jest und ts-morph. Diese Kompatibilitätsprobleme werden anhalten, bis sich die programmatische API des Compilers im kommenden 7.1-Release stabilisiert hat. Das bedeutet, dass Teams, die auf diese Tools angewiesen sind, ihre Upgrade-Pläne vorerst pausieren sollten.

Was sich in TypeScript 7 geändert hat

Das Release führt tsgo ein, einen Go-Port des Type-Checkers, den das TypeScript-Team unter dem Codenamen Project Corsa entwickelt hat. Durch die Verlagerung des Kerns von JavaScript zu Go kann der Compiler Builds bis zu zehnmal schneller ausführen – eine Schlagzeile, die Early Adopter angezogen hat, die Zeit in ihren CI-Pipelines einsparen möchten.

Warum die Tools fehlschlagen

Tools, die mit TypeScript arbeiten, kommunizieren nicht direkt mit dem Type-Checker. Sie rufen eine Reihe interner APIs auf, die Typinformationen, Diagnosen und AST-Traversierung bereitstellen. Diese APIs wurden für tsgo neu geschrieben und befinden sich bis zur Version 7.1 noch in der Entwicklung. Das Ergebnis ist eine Kaskade von Abstürzen und stillen Fehlern:

  • typescript-eslint – npm verweigert die Installation zusammen mit TypeScript 7; ein erzwungener Installationsvorgang führt dazu, dass ESLint einen TypeError auswirft.
  • ts-jest – versucht, interne Methoden aufzurufen, die in der Go-Version nicht mehr existieren, was zum Abbruch der Transformation von Testdateien führt.
  • ts-morph – erwartet die stabile API, um die Codestruktur zu durchlaufen; mit der aktuellen API kann es zu falschen Ergebnissen kommen oder zu Fehlern ohne Warnung.
  • Monorepos – tsgo lässt bestimmte generische Typparameter weg, was zu Typfehlern führt, die nur in großen Multi-Package-Projekten auftreten.

Jeder Workflow, der Linting, Jest-Tests oder Code-Analyse mit TypeScript 7 kombiniert, wird wahrscheinlich fehlerhafte (rote) Builds produzieren.

Wer betroffen ist

  • Front-End-Teams, die ESLint als Teil jedes Pull Requests ausführen.
  • Back-End-Services, die für Unit-Tests auf ts-jest angewiesen sind.
  • Bibliotheken, die ts-morph für die Codegenerierung oder Dokumentation nutzen.
  • Organisationen mit Monorepo-Setups, in denen die Typinferenz bereits komplex ist.

Wenn Ihre CI-Pipeline nach einem TypeScript-Upgrade „rot“ geworden ist, ist wahrscheinlich einer der oben genannten Punkte die Ursache.

Ein sicherer Migrationspfad bis 7.1

Der einfachste Weg, die Geschwindigkeitsvorteile zu nutzen, ohne die Tools zu beeinträchtigen, besteht darin, den schnellen Type-Checking-Schritt vom eigentlichen Build zu entkoppeln:

  1. Fixieren Sie die Haupt-TypeScript-Version auf 6.x – dies bewahrt die stabile API, die alle Tools erwarten.
  2. Fügen Sie @typescript/native-preview als Dev-Dependency hinzu – das Paket enthält die tsgo-Binärdatei für schnelles Type-Checking in der CI.
  3. Führen Sie tsgo mit --noEmit für schnelle Checks aus – dies validiert die Typen, erzeugt aber keine Ausgabedateien.
  4. Verwenden Sie den klassischen tsc-Compiler für echte Buildstsc erzeugt weiterhin JavaScript und respektiert die 6.x-API.
npm install -D typescript@^6.9
npm install -D @typescript/native-preview

Aktualisieren Sie Ihre package.json-Skripte:

{
  "scripts": {
    "typecheck:fast": "tsgo --noEmit",
    "build": "tsc"
  }
}

Mit diesem dualen Setup profitieren Sie weiterhin vom zehnfachen Geschwindigkeitsvorteil in der CI, während die Kompatibilität mit ESLint, ts-jest und ts-morph erhalten bleibt.

Wann Sie direkt auf 7.0 upgraden können

Wenn Ihr Codebase ausschließlich tsc aufruft – also kein Linting, kein Jest, kein ts-morph – dann betrifft Sie die instabile API nicht. In diesem speziellen Szenario können Sie sofort auf TypeScript 7 umsteigen und die Leistungssteigerung ohne zusätzliche Schritte genießen.

Worauf Sie achten sollten

  • Version 7.1 – das TypeScript-Team hat signalisiert, dass die programmatische API in diesem Release eingefroren wird. Sobald diese verfügbar ist, wird die Brücke zwischen tsgo und dem bestehenden Tooling entfallen, was ein sauberes Upgrade ermöglicht.
  • Tooling-Updates – Achten Sie auf neue Releases von typescript-eslint, ts-jest und ts-morph. Diese werden kurz nach dem Release von 7.1 kompatible Versionen veröffentlichen.
  • CI-Konfiguration – Denken Sie daran, tsgo --noEmit durch einen regulären tsc-Aufruf zu ersetzen, sobald sich die API stabilisiert hat; das Preview-Paket wird dann nicht mehr benötigt.

Fazit: Bis zur API-Fixierung in Version 7.1 sollten Sie für Ihren Hauptcompiler bei TypeScript 6.x bleiben, @typescript/native-preview für schnelle Checks hinzufügen und weiterhin tsc für Builds verwenden. So vermeiden Sie fehlerhaftes Linting und Testing und profitieren dennoch von der Leistung der neuen Go-Engine.