TypeScript 7 est disponible, bonjour à Go

Par:
francoistonic

jeu, 09/07/2026 - 07:52

TypeScript sauce Go est officiellement disponible. TypeScript 7 est une étape importante dans la vie du langage avec un focus sur les performances avec la transition vers Go et le nouveau compilateur Go. L'équipe TS mise d'ailleurs sur les performances pour accélérer la migration vers la 7.0.

En clair : un TypeScript plus rapide dont les résultats se vérifient. "Un TypeScript plus rapide signifie que chaque étape précédente est optimisée. Le chargement complet de votre projet par l'éditeur sera instantané. Les délais liés à la recherche de toutes les références, à la saisie semi-automatique et aux diagnostics seront considérablement réduits. Et lorsque vous exécutez `tsc`, éventuellement en mode `--watch`, vous pourrez optimiser votre boucle de rétroaction et itérer plus rapidement que jamais." explique l'annonce. 

Quelques benchs de compilation entre les v6 et v7 :

- VS Code 2,3 millions de lignes de code : 125s -> 10s

- Bluesky 628 000 lignes : 24s -> 2,8s

TS 7 minimise aussi la consommation mémoire même s'il ne faut pas s'attendre à des miracles :

- VS Code : 5,2 Go -> 4,2 Go

- Bluesky : 1,8 Go -> 1,3 Go

"Bien sûr, l'expérience ne se limite pas à la compilation complète. Sur le même ordinateur, l'ouverture d'un fichier contenant une erreur dans le code source de VS Code prenait auparavant environ 17,5 secondes entre l'ouverture de l'éditeur et l'affichage de la première erreur. Avec TypeScript 7, ce délai est inférieur à 1,3 seconde, soit plus de 13 fois plus rapide." explique l'équipe. 

Microsoft se veut aussi rassurant sur la robustesse de TypeScript 7.0 : des millions de tests ont été réalisés durant le développement, un portable natif strictement identique, un typage identique. 

Surtout, il est possible de faire fonctionnement side by side TypeScript 6 et TypeScript 7. Du moins, durant une phase de transition. "Bien que TypeScript 7.0 soit disponible, il n'est pas fourni avec une API. Nous prévoyons que TypeScript 7.1 inclura une nouvelle API (différente), mais en attendant, notre priorité est de garantir la compatibilité de TypeScript avec TypeScript 6.0 pour les utilitaires qui nécessitent encore un accès programmatique au compilateur (comme typescript-eslint).". Cela signifie que les API de TS 7 ne changent pas. La 7.1 introduira des changements.

Quid de la transition ? "Dans le cadre du processus de transition 6.0/7.0, nous avons publié un nouveau package de compatibilité, @typescript/typescript6. Ce package fournit un exécutable nommé tsc6, de sorte que si nécessaire, vous pouvez installer TypeScript 7.0 (qui fournit son propre binaire tsc) côte à côte sans conflits de noms. Le nouveau package réexporte également l'API TypeScript 6.0, afin que vous puissiez utiliser tsc pour TypeScript 7, tandis que d'autres outils peuvent continuer à s'appuyer sur 6.0."

Microsoft recommande d'utiliser npm pour faire les imports de dépendances. 

Le langage permet maintenant d'exécuter plusieurs étapes en parallèle : parsing, vérification des types, génération de code. Gain de temps. La v7 introduit, en expérimentation : --checkers et --builders pour mieux tuning le parallélisme. Par exemple, la vérification des types est une des étapes les plus complexes avec les multiples dépendances entre les fichiers. La v7 permet de créer, par défaut, 4 workers de type-checking. Des tests avec 8 checkers (--checkers 8) gagnent 16x le temps d'analyse. Cela est intéressant sur des gros projets ou du code très complexe.

La v7 assure une compatibilité avec le type-checking de la v6. 

Les principaux changements sur la configuration par défaut :

- L'option `strict` est activée par défaut.
- module : par défaut est `esnext`.
- yarget : par défaut est la version stable d'ECMAScript précédant immédiatement `esnext`.
- L'option `noUncheckedSideEffectImports` est activée par défaut.
- L'option `libReplacement` est désactivée par défaut.
- L'option `stableTypeOrdering` est activée par défaut et ne peut pas être désactivée.
- Le répertoire racine est désormais défini par défaut sur `./`, et les répertoires sources internes doivent être spécifiés explicitement.
- La valeur par défaut de `types` est désormais `[]`, et le comportement précédent peut être rétabli en la définissant sur `["*"]`.
A noter aussi que TS7 gère les points de code Unicode plus naturellement lors de l'inférence depuis un template literal types :
type HeadTail<S> = S extends `${infer Head}${infer Tail}` ? [Head, Tail] : never;
type Result = HeadTail<"abc">;
//   ^
// In 7.0: ["", "abc"]
// Previously: ["\ud83d", "\ude00abc"]
D'autre part, le support JavaScript a été revu dans TS 7 pour une analyse plus cohérente des fichiers. Voir la note de version pour les différentes.