Menu

TypeScript 7 : compilateur natif, nouveautés et migration

TypeScript 7, c'est le compilateur TypeScript réécrit en Go sous forme de programme natif : environ dix fois plus rapide, avec la même commande tsc et le même langage. Ce qui change pour vous (nouvelles valeurs par défaut, options supprimées, API JavaScript absente), les outils qui ont encore besoin de TypeScript 6, et comment migrer.

Cette page contient des éditeurs exécutables - modifiez, exécutez et voyez la sortie instantanément.

TypeScript 7, c'est le compilateur TypeScript réécrit en Go et livré sous forme de programme natif. Le langage est le même, la commande est toujours tsc et le paquet npm reste typescript ; ce qui change, c'est la vitesse (des builds complets environ dix fois plus rapides), une série de nouvelles valeurs par défaut, et la suppression des options que TypeScript 6 avait dépréciées. TypeScript 7.0 est sorti le 8 juillet 2026, et la version disponible sur npm est la 7.0.2.

npm install --save-dev typescript@latest
npx tsc --version
Version 7.0.2

L'une des rares différences visibles au niveau des types concerne la façon dont les template literal types découpent les chaînes. JavaScript stocke les chaînes sous forme d'unités de code UTF-16, et un emoji comme 😀 en occupe deux :

TypeScript 6 découpait les template literal types par unité de code, comme text[0]. TypeScript 7 les découpe par point de code, comme [...text], donc l'emoji reste entier :

type HeadTail<S> = S extends `${infer Head}${infer Tail}` ? [Head, Tail] : never;

type Result = HeadTail<"😀abc">;
// TypeScript 7: ["😀", "abc"]
// TypeScript 6: ["\ud83d", "\ude00abc"]

Pourquoi TypeScript a été réécrit en Go

Jusqu'à la version 6, le compilateur TypeScript était lui-même écrit en TypeScript et tournait sur Node.js. Sur les grosses bases de code, cela voulait dire des builds lents, un démarrage lent de l'éditeur et une forte consommation de mémoire.

Anders Hejlsberg a annoncé le portage natif le 11 mars 2025, dans un article intitulé « A 10x Faster TypeScript ». La nouvelle base de code avait pour nom de code Corsa, et celle en JavaScript Strada. L'équipe a porté le code du compilateur existant au lieu de repenser le vérificateur de types : le nouveau compilateur suit donc les mêmes règles et signale les mêmes erreurs. TypeScript 6.0 (mars 2026) a été la dernière version de la base de code JavaScript et a servi de passerelle : elle a déprécié tout ce que TypeScript 7 allait supprimer. TypeScript 7.0 a suivi le 8 juillet 2026.

TypeScript 7 est-il vraiment plus rapide ?

Builds complets de projets open source, tels que publiés avec la version 7.0 :

ProjetTypeScript 6TypeScript 7AccélérationMémoire
VS Code125,7 s10,6 s11,9xde 5,2 Go à 4,2 Go
Sentry139,8 s15,7 s8,9xde 4,9 Go à 4,6 Go
Bluesky24,3 s2,8 s8,7xde 1,8 Go à 1,3 Go
Playwright12,8 s1,47 s8,7xde 1,0 Go à 0,9 Go
tldraw11,2 s1,46 s7,7xde 0,6 Go à 0,5 Go

Ces mesures utilisaient la valeur par défaut de 4 workers de vérification des types. Avec --checkers 8 sur la même machine, le build de VS Code a pris 7,51 s (16,7x) et celui de tldraw 1,06 s (10,6x), au prix d'une mémoire plus élevée.

L'éditeur y gagne tout autant. Le service de langage tourne désormais comme un serveur de langage natif : sur la base de code de VS Code, le temps entre l'ouverture de l'éditeur et l'affichage de la première erreur dans un fichier est passé d'environ 17,5 secondes à moins de 1,3 seconde. Le gain compte surtout pour les monorepos, les pipelines de CI et les éditeurs ouverts sur de grosses bases de code.

Ce qui ne change pas

  • La commande et le paquet. npm install --save-dev typescript et npx tsc. À l'installation, npm choisit un binaire précompilé pour votre plateforme parmi des dépendances optionnelles comme @typescript/typescript-linux-x64 : il n'y a rien d'autre à configurer.
  • Le langage. La même syntaxe, le même système de types, les mêmes codes d'erreur.
  • Les résultats. Les notes de version indiquent que pratiquement tout code qui compile sans erreur avec TypeScript 6.0, avec l'option stableTypeOrdering activée et sans aucun réglage ignoreDeprecations, devrait compiler à l'identique avec TypeScript 7.0.

Nouvelles valeurs par défaut

TypeScript 6.0 a changé ces valeurs par défaut et TypeScript 7 les conserve. Elles ne comptent que pour les options que votre tsconfig.json ne règle pas :

OptionNouvelle valeur par défautEffet si vous dépendiez de l'ancienne
stricttrueLes projets qui n'ont jamais réglé strict ont désormais les vérifications strictes de null, noImplicitAny et le reste
targetes2025, la version la plus récente avant esnextLa sortie garde la syntaxe moderne, sauf si vous réglez une cible plus ancienne
moduleesnextSortie en modules ES, sauf si vous réglez nodenext ou commonjs
types[]Les paquets @types installés ne sont plus chargés automatiquement : ajoutez "types": ["node"] (["*"] rétablit l'ancien comportement)
rootDir./, le dossier qui contient tsconfig.jsonAvec outDir réglé et les sources dans src, error TS5011 tant que vous ne réglez pas "rootDir": "./src"
noUncheckedSideEffectImportstrueUn import à effet de bord comme import "./styles.css" demande une déclaration de module (declare module "*.css";), que fournissent en général les paquets de types des frameworks
stableTypeOrderingToujours actif, impossible à désactiverLes types sont ordonnés de la même façon à chaque exécution, donc les messages d'erreur et la sortie .d.ts ne dépendent pas de l'ordre de vérification

Options et syntaxe supprimées

Les options dépréciées dans TypeScript 6 sont des erreurs dans TypeScript 7 :

  • target: es5, et downlevelIteration, qui n'existait que pour la sortie ES5.
  • moduleResolution: node (aussi appelé node10) et classic. Utilisez nodenext ou bundler.
  • module: amd, umd, system et none.
  • baseUrl (écrivez les paths relativement au fichier tsconfig) et outFile (utilisez un bundler).
  • esModuleInterop: false, allowSyntheticDefaultImports: false et alwaysStrict: false ; les trois sont toujours actifs.

Le compilateur indique exactement quoi supprimer :

error TS5102: Option 'baseUrl' has been removed. Please remove it from your configuration.
error TS5108: Option 'moduleResolution=node10' has been removed. Please remove it from your configuration.

Deux anciennes formes de syntaxe sont aussi des erreurs : module Foo { } pour un namespace (écrivez namespace Foo { } ; declare module "foo" pour un paquet n'est pas concerné) et les import assertions (assert { type: "json" } devient with { type: "json" }).

index.ts(2,8): error TS1540: A 'namespace' declaration should not be declared using the 'module' keyword. Please use the 'namespace' keyword instead.

Remplacer module par namespace à la ligne 2 corrige l'erreur, et le programme affiche 4.

En ligne de commande, tsc file.ts dans un dossier qui contient un tsconfig.json s'arrête désormais avec error TS5112 au lieu d'ignorer la configuration en silence. Lancez tsc seul, ou passez --ignoreConfig. Dans les fichiers JavaScript vérifiés avec JSDoc, TypeScript 7 lit les types davantage comme le fait TypeScript : @enum n'est plus reconnu, et une valeur utilisée comme type demande typeof. La page tsconfig donne le remplaçant de chaque option supprimée.

Les outils qui ont encore besoin de TypeScript 6

TypeScript 7.0 ne fournit pas d'API JavaScript stable. require("typescript") ne renvoie que des informations de version (version et versionMajorMinor), et les fonctions du compilateur qu'appellent les autres outils (createProgram, le service de langage) sont absentes ; les points d'entrée typescript/unstable/* du paquet sont expérimentaux et ne les remplacent pas. Les notes de version indiquent que l'équipe prévoit que TypeScript 7.1 fournisse une nouvelle API, différente. D'ici là, tout ce qui importe le compilateur comme bibliothèque continue d'utiliser TypeScript 6 :

  • typescript-eslint (règles de lint qui s'appuient sur les types)
  • L'outillage des fichiers Vue, Svelte et Astro, la vérification des types des templates Angular, et MDX
  • ts-node, qui plante au démarrage quand TypeScript 7 est installé

Pour ces outils, TypeScript fournit un paquet de compatibilité, @typescript/typescript6, qui installe TypeScript 6 avec son API complète et une commande tsc6. Avec les alias npm, un même projet peut avoir les deux : TypeScript 7 fait les builds, et les outils qui importent typescript obtiennent la version 6.

{
    "devDependencies": {
        "@typescript/native": "npm:typescript@^7.0.2",
        "typescript": "npm:@typescript/typescript6@^6.0.2"
    }
}

Après npm install :

$ npx tsc --version
Version 7.0.2
$ npx tsc6 --version
Version 6.0.3

Si vous n'utilisez aucun de ces outils, installez simplement typescript et ignorez cette section.

Nouvelles options de ligne de commande

Le compilateur natif analyse, vérifie et émet en parallèle. Trois nouvelles options pilotent ce parallélisme, et les notes de version qualifient --checkers et --builders d'expérimentales :

OptionRôle
--checkers NNombre de workers de vérification des types par projet (4 par défaut). En ajouter peut aider sur les machines à nombreux cœurs et coûte de la mémoire ; en mettre moins convient aux petits runners de CI.
--builders NNombre de projets construits en même temps lors d'un --build de références de projets. Se multiplie avec --checkers : 4 builders avec 4 checkers peuvent lancer 16 checkers à la fois.
--singleThreadedDésactive tout parallélisme, pour le débogage ou quand la mémoire est très limitée.

--watch a lui aussi été réécrit, sur un portage en Go du surveillant de fichiers du bundler Parcel.

Support des éditeurs

Pour VS Code, l'équipe TypeScript publie une extension dédiée à TypeScript 7 ; une fois installée, elle devient la valeur par défaut, et la commande « Disable TypeScript 7 Language Server » de la palette de commandes permet de revenir à TypeScript 6. La dernière version de Visual Studio active TypeScript 7 automatiquement selon l'espace de travail, et les autres éditeurs (Neovim, Zed, Sublime Text, Emacs) s'y connectent via le Language Server Protocol. Les projets qui utilisent des fichiers Vue, Svelte, Astro ou MDX, ou des templates Angular, gardent un support éditeur basé sur TypeScript 6 tant que TypeScript 7 n'expose pas d'API utilisable par ces outils. Un projet Angular peut tout de même lancer le tsc de TypeScript 7 pour des vérifications rapides de tout le projet.

Comment passer à TypeScript 7

  1. Passez d'abord à TypeScript 6, si vous êtes en 5.x : npm install --save-dev typescript@6. Corrigez chaque erreur de dépréciation signalée au lieu de la faire taire avec "ignoreDeprecations": "6.0".
  2. Activez "stableTypeOrdering": true sous TypeScript 6 et corrigez tout ce que cela change. C'est la configuration dont l'équipe affirme qu'elle compile à l'identique en 7.
  3. Réglez les options dont la valeur par défaut a changé si vous dépendiez des anciennes valeurs, par exemple "types": ["node"] et "rootDir": "./src".
  4. Installez TypeScript 7 : npm install --save-dev typescript@latest. Retirez ensuite stableTypeOrdering si vous le souhaitez ; l'option est toujours active en 7.
  5. Vérifiez votre outillage. Si vous utilisez typescript-eslint, ts-node ou un framework avec vérification des types des templates, mettez en place l'alias TypeScript 6 montré plus haut.
  6. Confirmez la version avec npx tsc --version, et assurez-vous que la CI installe à partir du lockfile mis à jour.

tsgo et les préversions

Avant la sortie, le compilateur natif était publié sous le nom @typescript/native-preview, dont la commande était tsgo, pour pouvoir l'essayer à côté du tsc en JavaScript. Les articles de 2025 et du début de 2026 parlent de tsgo. Avec la 7.0, ce nom a disparu de l'usage courant : le compilateur natif s'appelle tsc, et ses builds nightly sont publiés sous typescript@next (les versions de développement de la 7.1 aujourd'hui).

Questions fréquentes

Qu'est-ce que TypeScript 7 ?

TypeScript 7 est la première version du compilateur TypeScript réécrit en Go et compilé en programme natif, au lieu de tourner en JavaScript sur Node.js. Il vérifie le même langage avec la même commande tsc, et les notes de version annoncent des builds complets en général 8 à 12 fois plus rapides qu'avec TypeScript 6. Il est sorti le 8 juillet 2026.

TypeScript 7 est-il écrit en Go ?

Oui. Le compilateur et le service de langage ont été portés de TypeScript vers Go (le projet avait pour nom de code Corsa, et la base de code JavaScript Strada). Vous l'installez toujours depuis npm avec le paquet typescript ; npm choisit un binaire natif précompilé pour votre système d'exploitation et votre processeur.

Faut-il modifier mon code pour TypeScript 7 ?

En général pas le code, parfois la configuration. TypeScript 7 supprime des options dépréciées dans la 6.0 (target: es5, moduleResolution: node, baseUrl, outFile et d'autres) et change des valeurs par défaut comme strict: true et types: []. Du code qui compile sans erreur avec TypeScript 6.0, avec stableTypeOrdering activé et sans ignoreDeprecations, devrait compiler à l'identique.

Qu'est-ce que tsgo ?

tsgo était le nom de commande des préversions du compilateur natif, publiées sous le paquet npm @typescript/native-preview avant la sortie de la 7.0. Dans TypeScript 7, le compilateur natif est simplement tsc dans le paquet typescript, et les builds nightly viennent de typescript@next.

typescript-eslint fonctionne-t-il avec TypeScript 7 ?

Pas directement. TypeScript 7.0 ne fournit aucune API JavaScript stable, et des outils comme typescript-eslint, ts-node et les vérificateurs de templates de Vue, Svelte et Angular appellent cette API. Gardez TypeScript 6 installé pour eux via le paquet @typescript/typescript6 (un alias npm), et utilisez le tsc de TypeScript 7 pour les builds. L'équipe TypeScript prévoit que TypeScript 7.1 fournisse une nouvelle API, différente.

Coddy programming languages illustration

Apprendre à coder avec Coddy

COMMENCER