Accueil / Articles / Les modifications majeures des paramètres par défaut dans TypeScript 6.0 : un guide pratique de migration

Les modifications majeures des paramètres par défaut dans TypeScript 6.0 : un guide pratique de migration

Découvrez quels sont les neuf paramètres par défaut du compilateur TypeScript 6.0 qui ont changé, comment configurer tsconfig pour 2026, et comment préparer des bases de code pour le TypeScript 7 basé sur Go.

805 mots

Si votre build commence récemment à générer des erreurs sous moduleResolution: node, ce n’est pas vous qui avez causé le problème. TypeScript 6.0 a modifié en silence neuf paramètres par défaut du compilateur, et les équipes qui ont reporté la mise à jour subissent désormais ces changements en même temps. Voici l’essentiel : il ne s’agit pas d’une mise à jour que vous pouvez continuer à différer indéfiniment. TypeScript 6.0 est la dernière version basée sur le compilateur original à base de JavaScript. TypeScript 7, quant à lui, représente une réécriture complète en Go, et les premiers rapports indiquent que les vitesses de compilation pourraient être jusqu’à 10 fois plus élevées qu’actuellement.

Qu’est-ce qui a vraiment changé

  1. Le mode strict est activé par défaut. Tout nouveau projet créé actuellement hérite automatiquement de la valeur strict: true. Si vous maintenez une base de code plus ancienne, prévoyez une série de nouveaux diagnostics liés aux types implicites any et aux vérifications de nullité qui restaient auparavant silencieuses.
  2. La cible de compilation par défaut a été déplacée d’ES3 à ES2022. Presque personne ne générait réellement du code en ES3, mais si votre pipeline n’indiquait pas explicitement de cible, ce changement modifie le code que le compilateur génère par défaut.
  3. ESM devient le système de modules par défaut. Les bases de code qui comptent encore fortement sur les appels require() doivent revoir sérieusement leur stratégie de modules, car les hypothèses intégrées au compilateur ne favorisent plus CommonJS.
  • moduleResolution: node est désormais obsolète. La solution recommandée consiste à passer à bundler ou nodenext, car le mécanisme de résolution de type bundler correspond désormais à la manière dont des outils comme Vite résolvent réellement les modules en pratique.
  • --outFile, ainsi que les formats de sortie AMD, UMD et SystemJS, ne sont plus pris en charge. Si votre projet vise encore l’un de ces formats, TypeScript 6.0 n’est pas encore prêt pour votre projet.
  • Le mot-clé assert utilisé pour les attributs d’import a été remplacé par with.
  • Une tsconfig recommandée pour 2026

    {
      "compilerOptions": {
        "target": "ES2022",
        "module": "ESNext",
        "moduleResolution": "bundler",
        "isolatedDeclarations": true,
        "strict": true,
        "noUncheckedIndexedAccess": true,
        "exactOptionalPropertyTypes": true,
        "skipLibCheck": true
      }
    }
    

    L’application de cette configuration dans plusieurs bases de code de taille moyenne en React et Next.js au cours de ce trimestre a entraîné des erreurs qui étaient presque toujours des bugs réels et non des faux positifs.

    Le nouveau flag stableTypeOrdering

    Ce drapeau ne reçoit pas l’attention qu’il mérite. Il normalise l’ordre interne des unions de types, ce qui signifie que les différences entre les résultats générés par le compilateur JavaScript traditionnel et celui basé sur Go apportent réellement de l’information, plutôt que d’être dues à un réordonnancement arbitraire. L’activer dès maintenant pour obtenir des compilations propres revient en fait à effectuer un essai préalable qui valide votre codebase avant la transition vers TypeScript 7.

    L’importance de cela pour les équipes full-stack

    • La réactivité de l’éditeur s’est nettement améliorée, car le service linguistique est désormais plus rapide que le compilateur lui-même, et c’est ce service avec lequel vous interagissez constamment au cours du développement quotidien.
    • Les définitions de types dans Redux, React et Next.js sont devenues plus strictes, ce qui se traduira par des inférences plus rigoureuses dans votre code de gestion d’état à mesure que ces packages sont mis à jour.
  • L’écosystème des plugins est actuellement instable. Compiler des plugins écrits pour le compilateur TypeScript actuel ne fonctionnera pas avec la version 7.0, donc si vos outils en dépendent, surveillez leur statut de compatibilité.
  • Étapes pratiques de migration

    1. Démarrez la mise à niveau sur une branche de développement dédiée plutôt que directement sur votre ligne principale.
    2. Exécutez tsc --noEmit et classez les erreurs selon la fréquence d’apparition de chaque motif dans le code, et non selon le fichier qui les liste en premier.
    3. Résolvez d’abord le problème de moduleResolution, car c’est généralement cette configuration qui provoque le plus d’incidents inattendus.
    4. Seulement après que tout le reste se compile correctement, activez stableTypeOrdering comme confirmation finale que la migration est réussie.

    Remarques finales

    TypeScript 6.0 ne se distingue pas par de nouvelles fonctionnalités spectaculaires. Ce qu’il représente, c’est un travail méticuleux et réfléchi de mise à jour qui précède le changement architectural le plus important que ce langage ait connu depuis sa création. Gérez cette migration par étapes gérables tant que vous disposez encore des ressources nécessaires pour en contrôler le déroulement. Reporter cette tâche ne l’élimine pas ; il s’agit simplement de reporter ce même travail à un moment futur où vous aurez moins de temps et plus de pression pour le mener à bien.

    Lectures complémentaires

  • Le compilateur Go de TypeScript et l’exécution native : un guide de migration — Découvrez comment le compilateur basé sur Go de TypeScript et l’exécution native via Node.js affecteront les bases de code React et Next.js, ainsi que ce qu’il convient de corriger dans votre tsconfig dès maintenant.
  • Envoyer des données avec RTK Query : un guide pratique sur les mutations — Apprenez à utiliser builder.mutation() dans RTK Query pour envoyer des requêtes POST, gérer les états de chargement et d’erreur, et créer un composant de formulaire fonctionnel.
  • La typage des React Hooks : useState, useEffect, useReducer et les hooks personnalisés — Apprenez à bien typiser useState, useEffect, useReducer et les hooks personnalisés en TypeScript, ainsi que le moment où choisir TypeScript plutôt que du JavaScript pur s’avère avantageux.