TypeScript 7 est arrivé le 8 juillet 2026 — une étape qui marque la fin d'un chapitre dans l'histoire des outils JavaScript. Après plus d'un an de préversions publiques sous le nom de code Projet Corsa, Microsoft a livré une réécriture complète du compilateur TypeScript en Go, offrant des builds environ 10 fois plus rapides sans aucun changement au système de types. Pour les équipes aux prises avec des vérifications de types de plusieurs minutes sur de grandes bases de code, c'est une transformation majeure.
Qu'est-ce que le Projet Corsa ?
Le Projet Corsa est le nom de code interne du travail de Microsoft pour porter l'intégralité du compilateur TypeScript — parser, binder, vérificateur de types, émetteur et service de langage — de JavaScript vers Go. L'initiative a été annoncée fin 2025 et a livré sa version stable sous TypeScript 7.0.
La motivation était fondamentale : le compilateur TypeScript fonctionne sur Node.js, qui est mono-thread par conception. Peu importe la puissance de la machine, l'ancien compilateur ne pouvait utiliser qu'un seul cœur CPU. Les goroutines de Go et le modèle de mémoire partagée permettent au nouveau compilateur de distribuer le travail sur tous les cœurs disponibles, en s'adaptant au matériel plutôt qu'en étant limité par lui.
Combien plus rapide ? Les vrais benchmarks
Les améliorations ne sont pas incrémentales. Daniel Rosenwasser, responsable produit TypeScript, a publié des chiffres concrets au lancement :
- Base de code VS Code (1,5M de lignes) : la vérification des types est passée de 89 secondes à moins de 9 secondes — environ 10 fois plus rapide
- Grand monorepo React : de 133 secondes à 16 secondes (8x plus rapide)
- Application Next.js typique : de 5 à 15 fois plus rapide selon la taille du projet
L'utilisation de la mémoire a également chuté de façon significative. Le compilateur Go utilise environ 60 à 70 % moins de mémoire maximale que la version Node.js, ce qui compte sur les runners CI aux ressources limitées.
Une machine à 8 cœurs effectue maintenant environ 8 fois plus de travail par seconde par rapport au compilateur Node.js mono-thread. Cette relation de mise à l'échelle est le gain architectural fondamental.
Comment fonctionne la réécriture en Go
TypeScript 7 n'est pas un nouveau langage ni un nouveau système de types. La syntaxe que vous écrivez, les règles qu'il applique et la sortie .d.ts qu'il produit sont identiques à TypeScript 5 et 6. Ce qui a changé, c'est ce qui se passe quand vous lancez tsc.
L'ancien compilateur était un programme JavaScript. Il analysait vos fichiers, construisait un AST, exécutait l'inférence de types et émettait du JavaScript — le tout dans un seul thread sur Node.js. Le nouveau compilateur est un binaire Go compilé qui fait le même travail logique mais :
- S'exécute nativement — pas de démarrage V8, pas de préchauffage JIT, exécution directe sur le système
- Utilise le vrai parallélisme — les goroutines vérifient les types des fichiers indépendants simultanément
- Gère la mémoire efficacement — l'allocateur de Go est conçu pour ce type de charge de travail
Pendant la période de préversion, le compilateur Go était disponible comme tsgo via @typescript/native-preview. À partir de la version 7.0, il est livré comme tsc par défaut.
Ce qui a changé : Ruptures et nouveaux paramètres par défaut
TypeScript 6 était la version pont intentionnelle — elle activait des paramètres par défaut plus stricts et dépréciait les options héritées pour que les équipes puissent nettoyer avant la migration vers 7.0. Si vous avez sauté TypeScript 6, ces avertissements sont maintenant des erreurs.
Le mode strict est activé par défaut
strict: true est maintenant la valeur par défaut. Tout projet qui dépendait de l'ancien paramètre permissif verra de nouvelles erreurs lors de la mise à niveau. La correction est explicite — ajoutez "strict": false pour désactiver, ou corrigez les lacunes de types une par une.
La cible de compilation passe à ES2022
La cible de compilation par défaut est passée de ES3 à ES2022. Le code qui dépendait de TypeScript pour émettre des polyfills ES3 aura besoin d'un "target": "ES3" explicite dans tsconfig.json.
Les paramètres de résolution de module mis à jour
moduleResolution prend maintenant "bundler" par défaut pour la plupart des configurations, et verbatimModuleSyntax prend true par défaut. Si votre base de code utilise import type de façon incohérente, vous verrez des erreurs au moment de la vérification des types.
Erreurs strictes sur les options dépréciées
Les options importsNotUsedAsValues et preserveValueImports provoquent maintenant des erreurs strictes. Supprimez-les de votre tsconfig.json et utilisez la configuration unifiée :
{
"compilerOptions": {
"moduleResolution": "bundler",
"strict": true,
"verbatimModuleSyntax": true
}
}L'API de plugin compilateur est incompatible
Si votre projet utilise des plugins de compilateur TypeScript — transformer plugins, ts-patch ou similaires — ils ne fonctionneront pas avec le compilateur Go. L'API de plugin s'appuyait sur la surface JavaScript qui n'existe plus. Les auteurs de plugins travaillent activement à livrer des équivalents en Go.
Compatibilité des outils
Tous les outils liés à TypeScript ne fonctionnent pas encore avec le nouveau compilateur :
| Outil | Statut |
|---|---|
ts-node | Mise à jour requise — dépend de l'API JS TS |
ts-jest | Mise à jour requise — dépend de l'API JS TS |
ts-morph | Mise à jour requise — dépend de l'API JS TS |
| ESLint avec règles TypeScript | Fonctionne — utilise les infos de types via API séparée |
Builds directs tsc | Entièrement supporté |
Mode watch (--watch) | Arrivant dans TypeScript 7.1 |
Compatibilité des frameworks
Next.js
Next.js fonctionne avec TypeScript 7 pour les builds, mais l'intégration native complète de tsgo est attendue au T3 2026. En attendant, séparez la vérification des types de votre processus de build :
// next.config.ts
const config = {
typescript: {
ignoreBuildErrors: true,
},
};
export default config;Puis lancez tsc --noEmit comme étape CI séparée.
Vue, Svelte, Astro et MDX
Les équipes utilisant Vue, Svelte, Astro ou MDX devraient attendre TypeScript 7.1. Le compilateur Go manque d'une API programmatique dont ces frameworks dépendent pour l'intégration dans les éditeurs et le traitement des fichiers spécifiques. Utiliser TypeScript 7.0 avec ces frameworks cassera le support IDE.
VS Code
Le service de langage — la partie qui alimente IntelliSense, les survols de types et la navigation vers la définition — est encore en cours de portage vers Go. Le service de langage basé sur Go est attendu fin 2026 ou début 2027. En attendant, VS Code continue d'utiliser le service basé sur JavaScript, donc les performances de l'éditeur ne changent pas avec la mise à niveau.
Installer TypeScript 7
npm install -D typescript@7Pour valider le compilateur Go avant de s'engager pleinement :
npm install -D @typescript/native-preview
npx tsgo --noEmitLancez tsgo en parallèle avec votre tsc existant pour comparer les résultats. Une fois la sortie concordante, basculez votre pipeline CI vers le nouveau compilateur.
Chemin de migration : Trois étapes
Étape 1 — Mettre à niveau vers TypeScript 6 d'abord
TypeScript 6 est la version pont prérequise. Elle convertit les erreurs de 7.0 en avertissements en premier, vous donnant la chance de les corriger de façon incrémentale.
npm install -D typescript@6
npx tsc --noEmit
# Corrigez tous les avertissements avant de continuerÉtape 2 — Lancer le compilateur Go en parallèle
npm install -D @typescript/native-preview
npx tsgo --noEmit # Compilateur Go
npx tsc --noEmit # Compilateur JS — comparez la sortieLes deux devraient produire des erreurs identiques. Les différences sont des bugs — signalez-les sur le dépôt GitHub de TypeScript.
Étape 3 — Passer à TypeScript 7
npm install -D typescript@7Mettez à jour votre script CI pour exécuter tsc --noEmit comme étape de vérification de types dédiée, séparée du build lui-même.
Ce qui arrive dans TypeScript 7.1
L'équipe TypeScript a décrit plusieurs fonctionnalités pour la version 7.1 :
- Mode watch (
--watch) — la principale lacune de 7.0 pour le développement local - API programmatique — débloque les chaînes d'outils Vue, Svelte, Astro et MDX
- Service de langage VS Code en Go (préversion)
- Couches de compatibilité pour ts-node et ts-morph
L'absence du mode watch dans 7.0 est la lacune la plus visible au quotidien. En attendant la version 7.1, gardez l'ancien tsc --watch via une entrée devDependencies séparée pointant vers TypeScript 6.
La vue d'ensemble
La réécriture en Go change l'économie de TypeScript à grande échelle. Les monorepos avec des centaines de packages, qui nécessitaient auparavant des serveurs de vérification dédiés, peuvent maintenant effectuer des builds complets dans le temps qu'il fallait pour vérifier un seul package. Les factures CI baissent. Les cycles de retour d'information des développeurs s'accélèrent.
TypeScript 7 ne change pas ce que vous écrivez. Il change la vitesse à laquelle la chaîne d'outils peut vous dire si vous l'avez écrit correctement. Pour la plupart des équipes, c'est le bon compromis : zéro coût de migration pour le système de types, et des améliorations significatives de l'expérience de travail quotidienne.