Quoi de neuf dans TypeScript 6.0
TypeScript 6.0 n’est pas une version classique centrée sur les fonctionnalités. Si vous effectuez la mise à niveau en vous attendant à une nouvelle syntaxe ou à des changements radicaux du système de types, vous serez surpris. Cette version concerne principalement la modernisation des valeurs par défaut, la suppression de l’héritage obsolète et la préparation de l’écosystème pour TypeScript 7.0 — le prochain portage natif du compilateur et des outils en Go. Comprendre ce qui a changé et pourquoi vous évitera des heures de débogage après la mise à niveau.
Points clés à retenir
- TypeScript 6.0 est une version de transition — la dernière version construite sur le compilateur basé sur JavaScript — conçue pour nettoyer les valeurs par défaut et les dépréciations avant l’arrivée de la ligne native TypeScript 7.0.
- Plusieurs valeurs par défaut du compilateur ont changé, notamment
strict: true,module: "esnext", untargetflottant qui se résout actuellement àes2025,types: [], etnoUncheckedSideEffectImports: true. Ces changements peuvent provoquer des erreurs de compilation si votre tsconfig reposait sur un comportement implicite. - Les nouvelles fonctionnalités de plateforme incluent la cible
es2025, les types pour l’API Temporal,RegExp.escape,Map.getOrInsert, et des entrées de bibliothèque DOM consolidées. - Plusieurs options héritées comme
--moduleResolution node(l’ancien comportementnode10),--target es5, et les anciens formats de modules sont dépréciés pour la transition vers TypeScript 7.0. Traitez-les dès maintenant pour éviter une migration douloureuse plus tard.
TypeScript 6.0 est une version de transition, pas une version de fonctionnalités
TypeScript 6.0 est intentionnellement positionnée comme la dernière version construite sur la base de code JavaScript. TypeScript 7.0 devrait être le successeur natif basé sur Go, avec des builds et des performances d’éditeur beaucoup plus rapides. TypeScript 6.0 nettoie les fondations avant que cette transition ne se produise.
L’implication pratique : la plupart des changements de TypeScript 6.0 concernent les valeurs par défaut de configuration et les dépréciations, et non de nouvelles fonctionnalités du langage. Si votre projet a accumulé des options tsconfig héritées, c’est le moment de les traiter.
Quoi de neuf dans TypeScript 6.0 : fonctionnalités d’alignement de plateforme
Malgré l’accent mis sur la transition, TypeScript 6.0 ajoute bel et bien un support significatif pour les API JavaScript modernes.
Cible ES2025 et nouveaux types intégrés
TypeScript 6.0 ajoute es2025 comme valeur valide pour --target et --lib. Cela inclut des types intégrés pour des API comme RegExp.escape, et déplace également certaines déclarations de esnext vers es2025.
Il ajoute également des types intégrés pour des API plus récentes qui sont toujours exposées via esnext :
RegExp.escape— échappe en toute sécurité les caractères spéciaux regex dans une chaîne- API
Temporal— un remplacement moderne pourDate, typé sousesnextoutemporal.esnext Map.getOrInsertetMap.getOrInsertComputed— des modèles d’upsert plus propres pourMapetWeakMap, disponibles viaesnext
// Avant : modèle d'upsert Map verbeux
if (!map.has("key")) map.set("key", defaultValue)
const value = map.get("key")
// Après : propre et concis
const value = map.getOrInsert("key", defaultValue)
Consolidation des types DOM
dom.iterable et dom.asynciterable sont maintenant fusionnés dans la bibliothèque dom de base. Vous n’avez plus besoin de les lister séparément dans votre tsconfig.json. Si vous utilisiez "lib": ["dom", "dom.iterable"], vous pouvez simplifier en "lib": ["dom"].
Importations de sous-chemins commençant par #/
TypeScript prend désormais en charge les importations de sous-chemins Node.js utilisant le préfixe #/. Cela correspond proprement au champ imports dans package.json, et rend la fonctionnalité beaucoup plus proche des modèles d’alias que les utilisateurs de bundlers connaissent déjà.
Discover how at OpenReplay.com.
Changements cassants de TypeScript 6.0 : ce qui cassera réellement votre projet
C’est ici que se situe la majeure partie de l’effort de migration vers TypeScript 6.0. Plusieurs valeurs par défaut du compilateur ont changé.
| Paramètre | Valeur par défaut TypeScript 6.0 |
|---|---|
strict | true |
module | esnext |
target | version ES supportée actuelle (es2025 aujourd’hui) |
types | [] (vide) |
rootDir | répertoire tsconfig |
noUncheckedSideEffectImports | true |
Le changement de types: [] est l’un des plus impactants. Auparavant, TypeScript incluait automatiquement chaque package dans node_modules/@types. Maintenant, il n’inclut rien par défaut. Les projets qui dépendent de globales provenant de @types/node, @types/jest, ou de packages similaires verront des erreurs comme :
Cannot find name 'process'. Try adding 'node' to the types field in your tsconfig.
Corrigez-le explicitement :
{
"compilerOptions": {
"types": ["node", "jest"]
}
}
Le changement de rootDir est également courant. Si vos fichiers de sortie apparaissent soudainement à dist/src/index.js au lieu de dist/index.js, ajoutez "rootDir": "./src" à votre tsconfig.
Un autre changement à surveiller est noUncheckedSideEffectImports: true. Si votre base de code contient des importations à effet de bord uniquement avec des fautes de frappe ou une résolution fragile, TypeScript 6.0 est plus susceptible de les signaler.
Dépréciations de TypeScript 6.0 : ce qu’il faut supprimer avant TypeScript 7
Ces options sont dépréciées dans la version 6.0 pour la transition vers TypeScript 7.0, et quelques anciens comportements ont déjà disparu :
--target es5(la cible la plus basse supportée est maintenant ES2015)--moduleResolution node/--moduleResolution classic→ migrez versnodenextoubundler--module amd,umd,systemjs,none--baseUrl→ déplacez le préfixe directement dans vos entréespaths--outFile→ utilisez un bundler comme esbuild, Vite, ou RollupesModuleInterop: falseetallowSyntheticDefaultImports: false- Syntaxe d’espace de noms héritée
module Foo {}→ utiliseznamespace Foo {} - Syntaxe
import assert→ remplacez parwith
Vous pouvez temporairement désactiver les avertissements de dépréciation avec "ignoreDeprecations": "6.0" dans votre tsconfig, mais cela doit être traité comme une solution de dépannage à court terme.
Mise à niveau vers TypeScript 6.0
Installez la version candidate actuelle 6.0 avec :
npm install -D typescript@rc
Exécutez tsc --noEmit et traitez les erreurs. La plupart des problèmes proviendront du tableau types, de rootDir, des importations à effet de bord, et des options dépréciées.
Conclusion
TypeScript 6.0 est une version de nettoyage, pas une vitrine de fonctionnalités. Son objectif est de retirer les valeurs par défaut héritées, d’aligner le compilateur avec le JavaScript moderne, et de préparer le terrain pour la ligne native TypeScript 7.0. Plus tôt vous traiterez ces changements de migration — tableaux types mis à jour, valeurs rootDir explicites, problèmes d’importation à effet de bord, et remplacements d’options dépréciées — plus votre chemin vers TypeScript 7.0 sera fluide.
Si vous souhaitez la présentation technique complète de l’équipe TypeScript, vous pouvez également lire l’annonce officielle de TypeScript 6.0 RC.
FAQ
Il le fera probablement si votre tsconfig reposait sur des valeurs par défaut implicites. Les cassures les plus courantes proviennent du champ types qui est maintenant par défaut un tableau vide, de rootDir qui pointe maintenant vers le répertoire tsconfig, et d'une gestion plus stricte des importations à effet de bord. Exécutez tsc --noEmit après la mise à niveau pour faire apparaître toutes les erreurs avant d'effectuer des modifications.
TypeScript 6.0 est la version finale construite sur le compilateur original basé sur JavaScript. Elle se concentre sur le nettoyage des valeurs par défaut et la dépréciation des options héritées. TypeScript 7.0 devrait être le successeur natif basé sur Go, avec des builds et des outils d'édition beaucoup plus rapides. La version 6.0 est l'étape de préparation pour cette transition.
Oui. L'ancien mode de résolution node dans TypeScript 6.0 fait référence au comportement hérité de type node10 et est déprécié, et classic a également disparu. Utilisez nodenext si votre projet s'exécute directement dans Node.js, ou bundler si vous vous appuyez sur un outil comme Vite, Webpack, Bun, ou esbuild pour résoudre et bundler vos modules.
Vous le pouvez, mais vous devrez généralement définir l'option module explicitement si esnext n'est pas ce que vous souhaitez. Si votre projet émet toujours du CommonJS, spécifiez module comme commonjs dans votre tsconfig. Cependant, envisagez de migrer vers des paramètres de modules modernes dans la mesure du possible, car TypeScript 6.0 favorise clairement les flux de travail actuels axés sur ESM.
Complete picture for complete understanding
Capture every clue your frontend is leaving so you can instantly get to the root cause of any issue with OpenReplay — the open-source session replay tool for developers. Self-host it in minutes, and have complete control over your customer data.
Check our GitHub repo and join the thousands of developers in our community.