TL;DR: TypeScript 7 ist kein Feature-Release. Es ist derselbe Compiler, noch einmal geschrieben — in Go statt in TypeScript. Struktur und Logik blieben erhalten, beide Compiler liefern identische Ergebnisse. Was sich ändert: nativer Maschinencode statt JavaScript, echte Threads mit gemeinsamem Speicher statt Single-Thread-Node. Für Millionen-Zeilen-Codebases der Unterschied zwischen "Kaffeepause" und "sofort da".
⚡ Performance
Microsofts eigene Messungen auf öffentlichen Codebases, vollständiger Build, Standardeinstellung --checkers 4:
| Codebase | TS 6 (tsc) | TS 7 (tsgo) | Faktor | Speicher |
|---|---|---|---|---|
| VS Code (1,5M LOC) | 125,7 s | 10,6 s | 11,9× | −18% |
| Sentry | 139,8 s | 15,7 s | 8,9× | −6% |
| Bluesky | 24,3 s | 2,8 s | 8,7× | −26% |
| Playwright | 12,8 s | 1,47 s | 8,7× | −11% |
| tldraw | 11,2 s | 1,46 s | 7,7× | −15% |
Quelle: Microsoft TypeScript Team, eigene Benchmarks, Juli 2026
Der teure Teil: Keine stabile API in 7.0
Die gesamte JavaScript-basierte Compiler-API (ts.createProgram, ts.TypeChecker, etc.) existiert in TS 7.0 nicht. Tools wie ts-morph, tsup --dts, typescript-eslint und ts-jest sind inkompatibel. Die neue API ist für 7.1 angekündigt.
🔧 Installation
Kein separater Binary mehr nötig. Das Standardpaket liefert ab sofort den Go-Compiler.
# Stabiles TypeScript 7 npm install -D typescript npx tsc --version # Nightlies der 7er-Linie npm install -D typescript@next # Type-Check ohne Emit (empfohlen für CI) npx tsc --noEmit Im Editor läuft alles über LSP. Für VS Code gibt es eine eigene Extension (TypeScriptTeam.native-preview), die sich automatisch als Standard setzt. Über die Befehlspalette lässt sie sich mit "Disable TypeScript 7 Language Server" abschalten.
🛠️ Parallelisierung steuern
TypeScript 7 nutzt standardmäßig 4 parallele Checker-Worker. Die Dateien werden per Round-Robin aufgeteilt — reproduzierbar, auch wenn manche Arbeit doppelt gemacht wird.
# Standard: 4 Checker npx tsc # Mehr Kerne, mehr Tempo, mehr Speicher npx tsc --checkers 8 # CI-Runner mit wenig RAM: keine Doppelarbeit npx tsc --checkers 1 # Monorepo: mehrere Projekte gleichzeitig bauen npx tsc --build --checkers 4 --builders 4 # bis zu 16 Checker! # Alles seriell — zum Debuggen und Vergleichen npx tsc --singleThreaded | Flag | Wirkung | Kosten |
|---|---|---|
--checkers n | Type-Checker-Worker (Default: 4) | Speicher, Doppelarbeit |
--builders n | Parallele Projekte unter --build | Multipliziert mit --checkers |
--singleThreaded | Alles seriell, auch Parsing und Emit | Volle Geschwindigkeit weg |
Einheitliche Checker-Anzahl über alle Umgebungen
In seltenen Fällen kann eine unterschiedliche Anzahl Checker reihenfolgeabhängige Ergebnisse sichtbar machen. Deshalb: eine feste Zahl über alle Umgebungen hinweg festlegen — lokal, CI und Release-Build sollten denselben Wert verwenden.
💥 Breaking Changes
TS 7 übernimmt alle Deprecations aus TS 6 als harte Fehler. Wer noch auf TS 5 sitzt, muss zweistufig migrieren.
| Option | Status | Migration |
|---|---|---|
strict | Default: true | Explizit "strict": false setzen wenn nötig |
types | Default: [] | Explizit setzen: ["node", "jest"] |
target: es5 | Entfernt | Minimum: es2015. Legacy via Babel/esbuild downstream |
moduleResolution: node/node10 | Entfernt | nodenext oder bundler |
| AMD / UMD / SystemJS | Entfernt | Auf ESM migrieren |
baseUrl | Entfernt | Präfixe in paths-Einträge ziehen |
outFile | Entfernt | Rollup, esbuild, Vite oder Webpack |
downlevelIteration | Entfernt | Ersetzlos streichen |
rootDir | Default: ./ | Explizit setzen, sonst landet Output in dist/src/ |
stableTypeOrdering — Warum das wichtig ist
TypeScript vergab interne Typ-IDs bisher in der Reihenfolge, in der Typen dem Compiler begegneten — und sortierte Unions danach. Eine unbeteiligte const weiter oben in der Datei konnte den emittierten Union-Typ von 100 | 500 zu 500 | 100 drehen.
Bei parallelem Type-Checking wäre diese Reihenfolge nicht mehr deterministisch. TypeScript 7 sortiert deshalb inhaltsbasiert und deterministisch. In 6.0 kann man dieses Verhalten mit --stableTypeOrdering vorab einschalten — kostet dort bis zu 25% Checkzeit, ist aber während der Migration die ehrlichste Vergleichsbasis.
🌐 JavaScript & JSDoc — Was sich geändert hat
Der Go-Compiler hat die JavaScript-Unterstützung bewusst aufgeräumt. Vieles war über Jahre gewachsen und an Closure-Konventionen orientiert; jetzt wird JavaScript weitgehend so analysiert wie TypeScript.
| Feature | Status | Ersatz |
|---|---|---|
| Werte als Typen (in JS) | Entfernt | typeof someValue |
@enum | Entfernt | @typedef auf (typeof Enum)[keyof typeof Enum] |
Alleinstehendes ? | Entfernt | any |
@class | Entfernt | Echte class-Deklaration |
Postfix ! | Entfernt | Schlicht T |
| Closure-Funktionssyntax | Entfernt | (s: string) => void |
| Closure header files | Entfernt | — |
Quelle: CHANGES.md im typescript-go-Repository (Context7)
📊 Status-Übersicht: Was funktioniert?
Offizieller Status aus dem TypeScript-Go-Repository:
| Feature | Status | Notiz |
|---|---|---|
| Program creation | Done | Gleiche Dateien, nicht alle Resolution-Modes |
| Parsing/Scanning | Done | Exakt gleiche Syntax-Fehler wie TS 6.0 |
| Type checking | Done | Gleiche Fehler, Orte, Meldungen |
| JSX | Done | — |
| Emit (JS Output) | Done | — |
| Declaration emit | Done | — |
| Build mode / Project References | Done | — |
| Incremental build | Done | — |
| Watch mode | Prototype | Rebuilds, aber kein incremental rechecking |
| Language Service (LSP) | In Progress | Fast alle Features implementiert |
| API | Not Ready | Für 7.1 angekündigt |
Quelle: README.md, microsoft/typescript-go (Context7)
🛤️ Der Migrationspfad
Microsoft empfiehlt eine viertufige Migration. Wer direkt von 5.x auf 7.0 springt, bekommt die Brüche von zwei Major-Versionen gleichzeitig auf den Tisch.
Phase 0 — Grundlage schaffen
- Auf TypeScript 6.0 aktualisieren, mit
"ignoreDeprecations": "6.0" - Baseline messen:
tsc --noEmitmit Zeitmessung, Fehlerzahl notieren - Alle Deprecation-Warnungen einsammeln und als Tickets ablegen
Phase 1 — Konfiguration bereinigen
typesexplizit setzen — meist["node"]plus TestrunnerrootDirexplizit setzen, Ausgabepfade prüfenbaseUrlentfernen, Präfixe inpathsziehenmoduleResolutionaufnodenextoderbundlerhebenignoreDeprecationsentfernen — ab hier muss 6.0 sauber sein
Phase 2 — strict und Reihenfolge
strict: trueaktivieren, notfalls modulweise über Project References--stableTypeOrderingeinschalten und neue Fehler abarbeiten- Emittierte
.d.tszwischen 6.0 und 7.0 vergleichen
Phase 3 — 7.0 daneben stellen
- TypeScript 7 per npm-Alias parallel installieren, 6.0 unangetastet lassen
- Nicht-blockierenden CI-Job mit
tsc --noEmitergänzen --checkersfestlegen und über alle Umgebungen gleich halten
Das Side-by-Side-Muster
Microsoft hat das Paket @typescript/typescript6 veröffentlicht — bringt eine Binary tsc6 und re-exportiert die vollständige 6.0-API:
// package.json { "devDependencies": { // tsc -> TypeScript 7 (schnell, für Check und Build) "@typescript/native": "npm:typescript@^7.0.2", // tsc6 -> TypeScript 6 (API-Oberfläche für Linter, Jest, Volar) "typescript": "npm:@typescript/typescript6@^6.0.2" } } 🔮 Was als Nächstes kommt
Mit 7.0 ist der Port abgeschlossen, und das Team kehrt zur normalen Arbeit zurück: neue Sprachfeatures, Ergonomie, weitere Performance — und die neue API. Die Kadenz soll wieder bei einem Release alle drei bis vier Monate liegen.
Die wichtigste Zahl für die Planung ist deshalb nicht 8× oder 12×, sondern 7.1. Bis dahin ist TypeScript 7 ein hervorragender Type-Checker und Editor-Motor mit einem Loch in der Werkzeugkette. Danach ist es einfach TypeScript.
Empfehlung: Upgrade auf TS 6 jetzt. Teste TS 7 mit @typescript/native-preview. Stelle CI auf tsc --noEmit um (10× schneller). Behalte TS 6 für Emit und API-Tools bei. Sobald 7.1 mit stabiler API da ist, fällt die zweite Hälfte weg.