TypeScript 6.0: Die letzte JavaScript-Version vor dem nativen Go-Compiler

TypeScript 6.0: Die letzte JavaScript-Version vor dem nativen Go-Compiler

lschvn

TypeScript 6.0 ist diesen Monat erschienen, und es trägt ein Gewicht, das die meisten Nebenversionen nicht tragen: Es ist die letzte Version auf der aktuellen JavaScript-Codebasis. Alles ab 7.0 wird auf einem nativen Go-Compiler laufen, den das Team seit über einem Jahr aufbaut.

Eine Brücke zu TypeScript 7.0

Die Hauptgeschichte ist, was 6.0 nicht enthält. Microsoft ist deutlich: Es ist ein "Brücken-Release" — dazu gedacht, APIs und Verhalten zu vereinheitlichen, damit der Umstieg auf die Go-Codebasis reibungslos verläuft. Das Team ist offen: "TypeScript 7.0 ist tatsächlich extrem nah an der Fertigstellung." Sie können die Native-Preview bereits in VS Code oder über npmx.dev/package/@typescript/native-preview ausprobieren.

Die meisten Änderungen in 6.0 dienen diesem Übergang. Aber es gibt auch neue Features.

Weniger this-Sensitivität bei der Typinferenz

Ein lange Zeit nerviger Edge Case wird behoben. Wenn TypeScript Type-Parameter aus einem Callback inferiert, überspringt es "kontextsensitive" Funktionen — solche mit ungetypten Parametern. Methoden in Shorthand-Syntax wurden immer als sensitiv behandelt, weil sie einen impliziten this-Parameter tragen, selbst wenn this nie verwendet wird. Arrow-Funktionen hatten dieses Problem nicht.

TypeScript 6.0 prüft jetzt, ob this tatsächlich referenziert wird, bevor eine Methode als sensitiv markiert wird. Wenn Sie this nie verwenden, nimmt die Methode normal an der Typinferenz teil. Die Korrektur wurde von Mateusz Burzyński beigesteuert (PR #62243).

Subpath-Imports unterstützen jetzt #/

Node.js hat kürzlich Support für Subpath-Imports hinzugefügt, die mit #/ statt mit #/etwas beginnen. TypeScript 6.0 übernimmt dies unter --moduleResolution nodenext und bundler. Sie können jetzt schreiben:

{
  "imports": {
    "#/*": "./dist/*"
  }
}

Das entspricht der Art und Weise, wie Bundler üblicherweise mit Path-Aliasen umgehen, und entfernt die Notwendigkeit eines Dummy-Segments nach #.

--moduleResolution bundler mit commonjs kombinieren

Bisher erforderte --moduleResolution bundler --module esnext oder --module preserve. Mit der Deprecation von moduleResolution: node fällt diese Einschränkung. Die neue gültige Kombination ist --module commonjs mit --moduleResolution bundler, ein praktischer Migrationspfad für viele bestehende Projekte (PR #62320).

Stable Type Ordering für 6.0-zu-7.0-Migrationen

TypeScript 7.0s paralleler Type-Checker sortiert interne Objekte deterministisch. TypeScript 6.0 führt --stableTypeOrdering ein, um die Ausgabe an diese Ordnung anzupassen. Das ist primär ein Migrationstool — das Flag kann das Type-Checking um bis zu 25% verlangsamen — aber es stellt sicher, dass Declaration-Files und Fehlermeldungen nicht unerwartet beim Upgrade wechseln. Das Flag ist nicht für den dauerhaften Einsatz empfohlen.

ES2025-Target und neue Built-in-API-Typen

TypeScript 6.0 fügt es2025 als gültigen Wert für --target und --lib hinzu. Das bringt RegExp.escape (Stage 4) und verschiebt Promise.try, Iterator-Methoden und Set-Methoden in die stabile Lib. Die Temporal-API — der lang erwartete date/time-Ersatz für Date — erhält ebenfalls vollständige Built-in-Typen in 6.0. Die Map- und WeakMap-Typen erhalten getOrInsert und getOrInsertComputed (Stage 4) für das häufige "get or create"-Pattern.

DOM-Lib-Konsolidierung

Der Inhalt von lib.dom.iterable.d.ts und lib.dom.asynciterable.d.ts ist jetzt vollständig in lib.dom.d.ts zusammengeführt. Sie brauchen dom.iterable nicht mehr zur lib-Array hinzuzufügen, nur um über eine NodeList zu iterieren.

Breaking Changes, die Sie wahrscheinlich betreffen

TypeScript 6.0 kehrt mehrere Defaults um, auf die ältere Projekte sich verlassen haben könnten:

  • strict ist jetzt standardmäßig true — wenn Sie sich auf fehlende implizite Strenge verlassen haben, setzen Sie explizit "strict": false
  • module ist standardmäßig esnext — ESM ist jetzt das angenommene Format für neue Projekte
  • target ist standardmäßig das aktuelle Jahr (effektiv es2025 gerade) — das es5-Target ist deprecated
  • types ist jetzt standardmäßig [] statt alles in node_modules/@types aufzuzählen — das allein hat Build-Zeiten um 20-50% in den vom Team untersuchten Projekten reduziert. Fügen Sie explizite Types hinzu: ["node", "jest"] usw.
  • rootDir ist standardmäßig das tsconfig-Verzeichnis statt von den Dateipfaden inferiert zu werden — verschachtelte Source-Verzeichnisse brauchen möglicherweise eine explizite rootDir-Konfiguration
  • noUncheckedSideEffectImports ist jetzt standardmäßig true

Fazit

Wenn Sie ein neues Projekt starten, ist 6.0 eine solide Wahl mit vernünftigen modernen Defaults. Wenn Sie auf einem bestehenden Codebase sind, planen Sie Zeit ein, um explizite types-Einträge hinzuzufügen und Ihr rootDir zu prüfen, bevor Sie blind upgraden. Der Go-basierte 7.0 kommt — das Team möchte, dass Sie jetzt auf 6.0 sind, damit der Übergang sauber verläuft.

Installieren: npm install -D typescript@latest

Häufig gestellte Fragen

Verwandte Artikel

Weitere Berichterstattung zu ähnlichen Themen und Tags.

SWC v1.15.26: Der Rust-basierte JavaScript-Compiler bleibt in Bewegung
JavaScript

SWC v1.15.26: Der Rust-basierte JavaScript-Compiler bleibt in Bewegung

Der vom swc-project herausgegebene Rust-basierte JavaScript/TypeScript-Compiler veröffentlicht v1.15.26 mit Fehlerbehebungen, Leistungsverbesserungen und einer immer tieferen Integration im Node.js-Ökosystem.
Astro 6.1.8 behebt kritischen Netlify-Deploy-Bug und Sicherheitslücke im /_image-Endpoint
TypeScript

Astro 6.1.8 behebt kritischen Netlify-Deploy-Bug und Sicherheitslücke im /_image-Endpoint

Astro 6.1.8 behebt eine Regression, bei der Build-Output-Dateinamen mit Sonderzeichen Deployments auf Netlify und Vercel brach, und patcht ein Content-Type-Confusion-Problem im integrierten Bild-Endpoint, das nicht-SVG-Inhalte als SVG ausliefern konnte.
QuickBEAM: Ein JavaScript-Runtime für die BEAM-VM — JavaScript trifft Erlangs OTP
JavaScript

QuickBEAM: Ein JavaScript-Runtime für die BEAM-VM — JavaScript trifft Erlangs OTP

QuickBEAM ist ein JavaScript-Runtime, der innerhalb der BEAM-VM läuft — derselben virtuellen Maschine, die Erlang und Elixir antreibt. Es integriert JavaScript in OTP-Supervision-Trees, ermöglicht JS den Aufruf von Elixir-Funktionen und OTP-Bibliotheken und wird mit einem eingebauten TypeScript-Toolkit ausgeliefert.

Kommentare

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

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