TypeScript 7.0 RC ist da: Der Go-Compiler erreicht den Release Candidate, rund 10-mal schneller, mit Side-by-Side-Migration

TypeScript 7.0 RC ist da: Der Go-Compiler erreicht den Release Candidate, rund 10-mal schneller, mit Side-by-Side-Migration

lschvn

TypeScript 7.0 RC erschien am 18. Juni 2026 und ist der Release Candidate des Compilers, den Microsoft seit über einem Jahr nach Go portiert. Die Schlagzeile ist Geschwindigkeit: 7.0 ist oft rund 10-mal schneller als TypeScript 6.0, Resultat nativer Ausführung plus Shared-Memory-Parallelität statt des Single-Threaded-Compilers, der in JavaScript gebootet war und den das Ökosystem seit Beginn nutzt. Sie können ihn heute mit npm install -D typescript@rc installieren, und npx tsc --version meldet 7.0.1-rc.

Das ist das Ergebnis von Project Corsa, dem nativen Port, den Microsoft Anfang 2025 angekündigt hat. TypeScript 6.0 war bewusst als „Bridge-Release" angelegt, um den Sprung zu glätten, und das Team beschrieb 7.0 bereits im April als „extrem kurz vor der Fertigstellung". Der RC ist diese Fertigstellung, eingefroren im Funktionsumfang.

Portiert, nicht neu geschrieben

Das wichtigste Detail für alle, die ein Upgrade vorbereiten: 7.0 ist ein methodischer Port, keine Neu-Schreibung von Grund auf. Microsoft hat die bestehende TypeScript-Codebasis Datei für Datei nach Go verschoben, und die Typ-Prüf-Logik ist strukturell identisch mit 6.0. Der Compiler wurde gegen die über ein Jahrzehnt gewachsene Test-Suite evaluiert und läuft bereits in mehreren Codebasen mit mehreren Millionen Zeilen, innerhalb wie außerhalb von Microsoft, wobei Teams bei Bloomberg, Canva, Figma, Google, Linear, Notion, Slack, Vercel und VoidZero zu den Early Adopters zählen, die deutliche Build-Zeit-Reduktionen melden.

Praktisch: Jeder Code, der unter 6.0 sauber kompiliert, mit aktiviertem stableTypeOrdering und ohne gesetztes ignoreDeprecations-Flag, sollte unter 7.0 identisch kompilieren. Die Semantik hat sich nicht bewegt.

Eine Migration für den parallelen Betrieb

Weil die Go-Codebasis noch keine stabile programmierbare API freigibt (sie ist explizit auf TypeScript 7.1 in mehreren Monaten verschoben), hat Microsoft 7.0 so ausgelegt, dass es neben 6.0 ohne „welches tsc ist welches?"-Konflikte läuft. Veröffentlicht wurde @typescript/typescript6, ein Kompatibilitätspaket, das die 6.0-API re-exportiert und ein tsc6-Binary mitliefert.

Für Werkzeuge wie typescript-eslint, die über eine Peer-Dependency direkt aus typescript importieren, ist der empfohlene Weg über npm-Aliase. Pinnen Sie typescript auf den 6.0-Alias, damit diese Werkzeuge weiterlaufen, und fügen Sie einen zweiten Alias für 7.0 hinzu:

{
  "devDependencies": {
    "typescript": "npm:@typescript/typescript6@^6.0.0",
    "typescript-7": "npm:typescript@rc"
  }
}

Nun läuft npx tsc mit 7.0, während typescript-eslint weiterhin 6.0 unter dem Namen typescript verbraucht. Nightlies erscheinen weiterhin unter @typescript/native-preview (Binary tsgo); sobald 7.0 auf den latest-Tag wechselt, konvergieren alle Releases auf das Paket typescript.

Parallelität, die sich einstellen lässt

Der Geschwindigkeitsgewinn stammt aus der Parallelisierung von Parsen, Typ-Prüfen und Emit, und 7.0 legt die Hebel offen. --checkers setzt die Anzahl der Typ-Prüf-Worker, standardmäßig 4. Typ-Prüfen hat dateiübergreifende Abhängigkeiten, daher erzeugt 7.0 statt vollständig unabhängiger Worker einen festen Pool, der dieselben Eingabedateien stets identisch aufteilt und so deterministische Ergebnisse liefert, wenn auch mit etwas duplizierter Arbeit. Ein höherer Wert beschleunigt große Builds auf Mehrkernmaschinen, kostet aber Speicher; ein niedrigerer hilft beengten CI-Runnern.

--builders steuert parallele Project-Reference-Builder, was vor allem für Monorepos zählt. Beide Flags sind multiplikativ: --checkers 4 --builders 4 kann bis zu 16 Checker erzeugen, was Microsoft als möglicherweise übermäßig einstuft. --singleThreaded begrenzt den gesamten Compiler auf einen Thread für Debugging oder den Vergleich mit 6.0.

Auch der --watch-Modus wurde neu aufgebaut. Microsoft hat den File-Watcher des Parcel-Bundlers (@parcel/watcher) von C++ nach Go portiert, mit minimalen Assembler-Shims, um keine C++-Toolchain-Abhängigkeit einzuführen. Das Resultat sind laut Team deutliche Ressourcen-Verbesserungen im Watch-Modus über alle Plattformen hinweg, mit Dank an Devon Govett für den ursprünglichen Parcel-Watcher.

6.0s Defaults werden zum Fundament, und seine Deprecations werden zu harten Fehlern

7.0 übernimmt die neuen Defaults aus 6.0 und duldet nicht länger, was 6.0 als deprecated markiert hat. Die Defaults, die sich ändern: strict ist true, module ist esnext, target ist die aktuelle stabile ECMAScript-Version vor esnext, noUncheckedSideEffectImports ist true, libReplacement ist false, und stableTypeOrdering ist true und lässt sich nicht abschalten.

Die beiden Optionen, die Microsoft als „am überraschendsten" kennzeichnet, sind rootDir und types. rootDir ist nun standardmäßig ./, sodass Projekte, deren tsconfig.json außerhalb von src liegt, es explizit setzen müssen, um die Verzeichnisstruktur zu erhalten. types ist nun standardmäßig [], sodass globale Deklarationen aus @types-Paketen explizit aufgelistet werden müssen (das alte Verhalten lässt sich mit "types": ["*"] wiederherstellen).

Die als deprecated geltenden Optionen, die zu harten Fehlern werden, umfassen target: es5, downlevelIteration, moduleResolution: node/node10 (nutzen Sie nodenext oder bundler), module: amd/umd/systemjs/none, baseUrl, moduleResolution: classic sowie das Setzen von esModuleInterop oder allowSyntheticDefaultImports auf false. Das Schlüsselwort asserts auf Imports muss zu with werden, und /// <reference no-default-lib /> wird unter skipDefaultLibCheck nicht mehr respektiert. Die vollständige Liste steht in der CHANGES.md im Repo microsoft/typescript-go.

Zwei echte Änderungen auf Typebene

Zwei Änderungen betreffen das Verhalten auf Typebene statt die Konfiguration. Die Inferenz von Template-Literal-Typen erhält nun Unicode-Codepunkte: HeadTail<"😀abc"> ergibt ["😀", "abc"] statt das Emoji in zwei UTF-16-Surrogathälften zu zerlegen. Das richtet die Inferenz an der Semantik von for...of und Spread aus, bricht aber String-Utilities auf Typebene, die bewusst UTF-16-Codeeinheiten modellierten, etwa einige Length-Helfer.

Auch die Unterstützung von JavaScript (JSDoc) wurde überarbeitet, um konsistent mit der Analyse von .ts-Dateien zu sein. @enum, ein eigenständiger ?-Typ, @class als Konstruktor-Marker, das postfixe ! und die Closure-artige Funktionssyntax wie function(string): void werden nicht mehr speziell behandelt. Werte, die eingesetzt werden, wo Typen erwartet werden, benötigen nun typeof.

Die Editor-Erfahrung

Der Language-Service basiert auf dem Language Server Protocol und nutzt mehrere Threads, sodass der Editor dieselbe Parallelität gewinnt wie die Kommandozeile. Die VS-Code-Erweiterung TypeScript Native Preview ist der weg mit der geringsten Reibung zum Ausprobieren, und Microsoft hat die seit der Beta fehlenden Funktionen nachgeliefert: Auto-Imports, semantisches Highlighting, Inlay-Hints, Code-Linsen, Go-to-Source-Definition, verknüpftes Bearbeiten von JSX sowie das Sortieren und Entfernen ungenutzter Imports. Die internen Daten des Teams sprechen von über 20-mal weniger scheiternden Language-Server-Befehlen gegenüber 6.0.

Was jetzt tun und was beobachten

Der Upgrade-Pfad für die meisten Teams: Wechseln Sie, falls noch nicht geschehen, zuerst zu 6.0, räumen Sie dessen Deprecations aus, dann npm install -D typescript@rc und lassen Sie es in der CI laufen. Pinnen Sie --checkers, wenn Sie über Maschinen hinweg identische Ergebnisse wollen. Microsoft plant das stabile 7.0-Release für den kommenden Monat, wobei 7.1 die stabile programmierbare API bringt, die es den Werkzeugen erlaubt, 6.0 endgültig zu verlassen. Melden Sie Regressionen auf dem Issue-Tracker von microsoft/typescript-go, denn das RC-Fenster ist der Moment, in dem dieses Feedback am meisten zählt.

Häufig gestellte Fragen

Verwandte Artikel

Weitere Berichterstattung zu ähnlichen Themen und Tags.

Turborepo 2.10.3 Erkennt nub und aube, Zwei Neue Rust-basierte Node.js-Paketmanager von Colin McDonnell (Zod) und Jeff Dickey (mise)
tooling

Turborepo 2.10.3 Erkennt nub und aube, Zwei Neue Rust-basierte Node.js-Paketmanager von Colin McDonnell (Zod) und Jeff Dickey (mise)

Turborepo [v2.10.3](https://github.com/vercel/turborepo/releases/tag/v2.10.3) wurde am 2026-07-03 mit First-Class-Support für [nub](https://github.com/nubjs/nub) und [aube](https://github.com/jdx/aube) veröffentlicht, zwei Rust-basierten Node.js-Paketmanagern, die im Frühjahr und Sommer 2026 entstanden sind. nub stammt von Colin McDonnell (Schöpfer von [Zod](https://github.com/colinhacks/zod), 43k Sternen) und aube von Jeff Dickey (Schöpfer von [mise](https://github.com/jdx/mise)); beide integrieren sich in Turborepo als `packageManager`-Werte in `package.json` und `devEngines.packageManager`. Die Release liefert außerdem einen neuen TUI/Streamed-Logs-Toggle, Click-to-Select für Tasks in der TUI-Taskliste, automatisches Kopieren von TUI-Selektionen in die Zwischenablage bei Maus-Release, ein `--production`-Flag auf `turbo prune`, TypeScript 7.0.1-rc als Workspace-Toolchain, Thin LTO + `codegen-units=1` für Release-Builds und eine lange Liste von Cache-Hashing-Performance-Fixes. Das Hauptsignal: Zwei der angesehensten Builder des JS-Toolchains liefern nun Paketmanager, die auf Stock-Node aufsetzen statt es zu ersetzen, und Turborepo ist das erste Mainstream-Monorepo-Tool, das beide formalisiert.
React Router v8 stuft seine Future Flags zu Standardwerten hoch, wird rein ESM und legt `react-router-dom` ab
tooling

React Router v8 stuft seine Future Flags zu Standardwerten hoch, wird rein ESM und legt `react-router-dom` ab

React Router v8.0.0 (17. Juni 2026) ist das erste Major Release unter dem Open-Governance-Modell des Projekts und das erste in einem geplanten Jahresrhythmus. Jedes `future.v8_*`-Flag aus v7 wird zum Standard (immer aktiviertes Middleware, Pass-Through-Requests, die Vite-Environment-API, Route-Modul-Splitting), die Baseline steigt auf Node 22.22+, React 19.2.7+ und Vite 7+, alle Pakete erscheinen rein als ESM mit ES2022 als Ziel, `react-router-dom` wird entfernt und die Node-Adapter wechseln zu einem von Remix gepflegten Fetch-Server, während `create-react-router` seinen Fetch-Polyfill durch nativen `fetch` ersetzt.
Vite 8.1 Beta: direkte `.wasm`-Imports, `build.chunkImportMap` und `server.hmr` → `server.ws`-Umbenennung
tooling

Vite 8.1 Beta: direkte `.wasm`-Imports, `build.chunkImportMap` und `server.hmr` → `server.ws`-Umbenennung

Vite 8.1.0-beta.0 (15. Juni 2026) ist die erste Beta der 8.1-Linie. Sie liefert den WASM-ESM-Integration-Standard als direkte .wasm-Imports, eine build.chunkImportMap-Option, die Import Maps nutzt, um Chunk-Cache-Hit-Raten zu verbessern, die Integration mit Vite Task für Zero-Config-Build-Caching, Support für lightningcss-Plugin-Dependencies, und einen Breaking Rename, der alle `server.hmr`-Optionen nach `server.ws` verschiebt.

Kommentare

Anmelden Melden Sie sich an, um an der Diskussion teilzunehmen.

Noch keine Kommentare. Seien Sie der Erste, der seine Gedanken teilt.