TypeScript 7 Native Preview: Project Corsa Schreibt Den Compiler in Go Neu, Und Es Verändert Alles

TypeScript 7 Native Preview: Project Corsa Schreibt Den Compiler in Go Neu, Und Es Verändert Alles

lschvn12 Min. Lesezeit

Microsofts VS Code-Codebase kompiliert in 7,5 Sekunden unter der TypeScript 7 Native Preview, gegenüber 77,8 Sekunden mit dem aktuellen JavaScript-basierten Compiler. Das ist eine 10× Verbesserung, und es ist das Hauptergebnis von Project Corsa, Microsofts vollständiger Neuschreibung des TypeScript-Compilers und Language Service in Go.

TypeScript 7 ändert das. Oder besser gesagt, es wird es tun, aber die Preview ist bereits da und die Zahlen sind schwer zu widerlegen.

Project Corsa: Der Native Port

Anfang 2025 kündigte Microsoft Project Corsa an, einen vollständigen nativen Port des TypeScript-Compilers und Language Service nach Go. Das Ziel war ehrgeizig: ~10x schnellere Build-Zeiten und signifikant verbesserte Editor-Reaktionsfähigkeit.

Die ersten Benchmarks waren auffällig. Auf der VS Code-Codebase selbst, einem großen, realen TypeScript-Projekt, fiel die Kompilierung von 77,8 Sekunden auf 7,5 Sekunden. Bei der Playwright-Testsuite ging es von 11,1 Sekunden auf 1,1 Sekunde. Das sind keine synthetischen Micro-Benchmarks. Es ist dieselbe Codebase, die Microsoft zum Erstellen von VS Code verwendet, auf derselben Hardware ausgeführt.

Der Port ist noch nicht vollständig. TypeScript 6.0 bleibt die JavaScript-basierte Version, durch die das Ökosystem migriert. Microsoft hat angekündigt, dass TypeScript 6.0 die letzte Hauptversion sein wird, die auf dem JS-basierten Toolchain aufbaut. TypeScript 7 ist dort, wo die native Ära wirklich beginnt.

Was „Nativ" In Der Praxis Wirklich Bedeutet

Es gibt zwei Dimensionen dessen, was TypeScript 7 ändert, und es lohnt sich, sie zu trennen.

Der Compiler (tsc), Der Kommandozeilen-TypeScript-Compiler. Ein Go-basierter tsc bedeutet schnellere Kompilierungen, geringere Speichernutzung während Builds und bessere Integration mit Nicht-JavaScript-Toolchains. Für Projekte, die tsc als Teil von CI-Pipelines ausführen, übersetzt sich dies direkt in schnellere Feedback-Zyklen.

Der Language Service, Das ist, was VS Codes IntelliSense, Fehlerunterstreichungen, Springen zur Definition und Refactoring ermöglicht. Die Editor-Performance wird vom Language Service ausgebremst, nicht vom Compiler. Microsoft berichtet, dass die Projektladezeiten in frühen Tests um etwa 8x zurückgegangen sind. Für jeden, der 30+ Sekunden darauf gewartet hat, dass ein großes TypeScript-Projekt in VS Code reagiert, ist diese Zahl relevant.

Node.js Type Stripping: TypeScript Ohne Transpiling Ausführen

Parallel zur nativen Compiler-Arbeit hat Node.js nativen TypeScript-Support durch eine Funktion namens Type Stripping ausgeliefert. Das ist ein fundamental anderer Ansatz zum Ausführen von TypeScript, anstatt .ts-Dateien in .js zu kompilieren, kann Node.js TypeScript jetzt direkt ausführen, indem es Type-Annotationen vor der Ausführung entfernt.

Der Zeitplan bewegte sich schnell:

  • Node.js 22.18.0 (Juli 2025) aktivierte Type Stripping standardmäßig
  • Warnungen wurden in v24.3.0/22.18.0 entfernt
  • Das Feature stabilisierte sich in v25.2.0

Der Schlüsselunterschied liegt zwischen löschbarer Syntax (Types, Interfaces, alles, was zur Laufzeit verschwindet) und Laufzeitsyntax (Enums, Namespaces, Dinge, die tatsächliches JavaScript erzeugen). Type Stripping funktioniert sauber für erstere. Für letztere hat das Node.js-Team ein --erasableSyntaxOnly-Flag eingeführt, das diese Trennung explizit erzwingt.

Das bedeutet, Sie können jetzt eine TypeScript-Datei schreiben und sie mit node file.ts ausführen, kein Build-Schritt, keine Transpilierung. Für Skripte, CLIs und schnelles Prototyping ist das eine signifikante Workflow-Verbesserung. Für Produktions-Builds möchten Sie immer noch tsc für Cross-Targeting und vollständige Typprüfung, aber die Lücke zwischen „Ich möchte etwas ausprobieren" und „Code ausführen" schrumpft erheblich.

Was Entwickler Jetzt Tun Müssen

Der Übergang ist nicht automatisch und es gibt konkrete Schritte, die sich vor der Verschiebung lohnt zu unternehmen:

Prüfen Sie die Enum- und Namespace-Nutzung. Das sind TypeScript-Features, die keine saubere löschbare Entsprechung haben. Enums können durch as const-Objekte ersetzt werden ; Namespaces können zu ES-Modulen migrieren. Wenn Ihre Codebase eines von beiden stark nutzt, starten Sie die Migration jetzt.

Aktivieren Sie --erasableSyntaxOnly in der CI. Dies markiert nicht-löschbare TypeScript-Syntax in Ihrer Codebase und gibt Ihnen eine klare Migrations-Roadmap, bevor Type-Stripping zum Standardverhalten wird.

Fügen Sie TypeScript 7 Preview zu CI-Pipelines hinzu. Das @typescript/native-preview-npm-Tag ermöglicht es Ihnen, den Go-basierten Compiler heute gegen Ihre Codebase zu testen. Es wird Ihre Produktions-Builds noch nicht ersetzen, aber es deckt Probleme auf, bevor die Migration landet.

Achten Sie auf Strict-by-Default-Änderungen. TypeScript 6.0 erwägt, den strict-Modus zum Standard für neue Projekte zu machen. Wenn Sie das Aktivieren der Strict-Prüfungen aufgeschoben haben, ist jetzt der Zeitpunkt, es wird nicht mehr lange optional sein.

Das Größere Bild

Zwei Kräfte konvergieren. Die erste ist die Compiler-Performance: Ein nativer TypeScript-Compiler löst den größten Schmerzpunkt im täglichen Entwicklerlebnis, langsamen Editor-Start und träge Typprüfung in großen Codebases. Die zweite ist der Runtime-Support: Node.js, das TypeScript nativ ausführt, entfernt den letzten Reibungspunkt zwischen dem Schreiben einer typannotierten Datei und deren Ausführung.

Zusammen bewegen sie TypeScript von „einer Sprache, die nach JavaScript kompiliert" hin zu etwas näher an einer erstklassigen Systemsprache für das JavaScript-Ökosystem. Ob das eine gute Sache ist, hängt von Ihrer Perspektive ab, aber die Richtung ist klar und die Performance-Gewinne sind real.

Die JavaScript-basierte TypeScript-Ära ist noch nicht vorbei. Aber TypeScript 7, mit seinem Go-basierten Compiler und der Node.js Type-Stripping-Funktion, die es ermöglicht, ist der Beginn eines anderen Kapitels.

Häufig gestellte Fragen

Verwandte Artikel

Weitere Berichterstattung zu ähnlichen Themen und Tags.

TypeScript 6.0 Erschienen: Die Letzte JavaScript-Basierte Version Vor dem Go-Rewrite
runtimes

TypeScript 6.0 Erschienen: Die Letzte JavaScript-Basierte Version Vor dem Go-Rewrite

Microsoft liefert TypeScript 6.0 als die letzte Version, die auf dem ursprünglichen JavaScript-Codebase aufbaut. DOM-Type-Updates, verbesserte Inferenz, Subpath-Imports und ein Migrations-Flag bereiten die Bühne für das native, Go-basierte TypeScript 7.0.
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.
Node.js 26.4.0 'Current' bringt das node:vfs-Subsystem (Matteo Collina), ESM-Loader-Package-Maps (Maël Nison), TLS-Zertifikatkompression, TCP_KEEPINTVL/TCP_KEEPCNT und argon2 als stabil
runtimes

Node.js 26.4.0 'Current' bringt das node:vfs-Subsystem (Matteo Collina), ESM-Loader-Package-Maps (Maël Nison), TLS-Zertifikatkompression, TCP_KEEPINTVL/TCP_KEEPCNT und argon2 als stabil

Node.js 26.4.0 (Current), veröffentlicht am 2026-06-24 von @aduh95, liefert acht SEMVER-MINOR-Änderungen: ein minimales node:vfs-Subsystem, das vom Anwendungscode bereitgestellte virtuelle Dateisysteme einhängt (PR #63115, Matteo Collina) sowie ein Folgepatch, das node:fs/promises an eingehängte VFS-Instanzen weiterleitet (PR #63537), Package-Maps für ESM-Loader-Hooks, die Bare-Spezifier durch die Loader-Hooks routen (PR #62239, Maël Nison), TLS certificateCompression, das die zlib- und zstd-Kompression aus RFC 8879 durch die OpenSSL-Build-Konfiguration verkabelt (PR #62217, Tim Perry), TCP_KEEPINTVL- und TCP_KEEPCNT-Unterstützung in net.Socket.setKeepAlive (PR #63825, Guy Bedford), vom Aufrufer bereitgestellte Buffer in fs.readFile / fs.readFileSync (PR #63634, Matteo Collina), closeIdleConnections, das nun auch Pre-Request-Sockets schließt (PR #63470, semimikoh), net.BlockList auf Release-Candidate-Stabilität vorgerückt (PR #63050), und crypto.argon2 + KEM encap/decap als stabil markiert (PR #63924, Filip Skokan). Die Release ergänzt außerdem WebCrypto-cSHAKE (PR #63988), QUIC listEndpoints (PR #63536) und X509Certificate-Handles (PR #63191), dgram connectSync / bindSync (PRs #63838 + #63932, Guy Bedford), net.BoundSocket für frühes TCP-Binding (PR #63951), einen experimentellen schnellen FFI-Aufrufpfad für AArch64 und x86_64 (PRs #63068 + #63941, Paolo Insogna), npm 11.17.0 (PR #63857), sqlite 3.53.2 und libffi 3.6.0.

Kommentare

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

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