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 :
| Projet | TypeScript 6 | TypeScript 7 | Accélération | Mémoire |
|---|---|---|---|---|
| VS Code | 125,7 s | 10,6 s | 11,9x | de 5,2 Go à 4,2 Go |
| Sentry | 139,8 s | 15,7 s | 8,9x | de 4,9 Go à 4,6 Go |
| Bluesky | 24,3 s | 2,8 s | 8,7x | de 1,8 Go à 1,3 Go |
| Playwright | 12,8 s | 1,47 s | 8,7x | de 1,0 Go à 0,9 Go |
| tldraw | 11,2 s | 1,46 s | 7,7x | de 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 typescriptetnpx 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
stableTypeOrderingactivée et sans aucun réglageignoreDeprecations, 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 :
| Option | Nouvelle valeur par défaut | Effet si vous dépendiez de l'ancienne |
|---|---|---|
strict | true | Les projets qui n'ont jamais réglé strict ont désormais les vérifications strictes de null, noImplicitAny et le reste |
target | es2025, la version la plus récente avant esnext | La sortie garde la syntaxe moderne, sauf si vous réglez une cible plus ancienne |
module | esnext | Sortie 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.json | Avec outDir réglé et les sources dans src, error TS5011 tant que vous ne réglez pas "rootDir": "./src" |
noUncheckedSideEffectImports | true | Un 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 |
stableTypeOrdering | Toujours actif, impossible à désactiver | Les 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, etdownlevelIteration, qui n'existait que pour la sortie ES5.moduleResolution: node(aussi appelénode10) etclassic. Utiliseznodenextoubundler.module: amd,umd,systemetnone.baseUrl(écrivez lespathsrelativement au fichier tsconfig) etoutFile(utilisez un bundler).esModuleInterop: false,allowSyntheticDefaultImports: falseetalwaysStrict: 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 :
| Option | Rôle |
|---|---|
--checkers N | Nombre 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 N | Nombre 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. |
--singleThreaded | Dé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
- 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". - Activez
"stableTypeOrdering": truesous TypeScript 6 et corrigez tout ce que cela change. C'est la configuration dont l'équipe affirme qu'elle compile à l'identique en 7. - 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". - Installez TypeScript 7 :
npm install --save-dev typescript@latest. Retirez ensuitestableTypeOrderingsi vous le souhaitez ; l'option est toujours active en 7. - 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.
- 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.