Microsoft a annoncé la sortie de TypeScript 7.0 Beta, marquant ainsi le lancement de la version bêta publique de la refonte, basée sur Go, du compilateur et de la suite d'outils du langage. Cette version est présentée comme un changement architectural majeur pour le langage, Microsoft affirmant que la nouvelle implémentation est « environ dix fois plus rapide que TypeScript 6.0 ». Bien qu'il s'agisse d'une version bêta, l'entreprise affirme que le compilateur est prêt pour la production. TypeScript 7.0 Beta est entièrement compatible avec TypeScript 6.0 et apporte plusieurs nouveautés visant à améliorer ses performances, sa stabilité et sa compatibilité.TypeScript (TS) est un langage de programmation de haut niveau qui ajoute à JavaScript un typage statique avec des annotations de type facultatives. Il est conçu pour le développement d'applications volumineuses et est compilé en JavaScript. TypeScript est développé par Microsoft en tant que logiciel libre et open source, distribué sous licence Apache 2.0. En mars 2025, Microsoft a annoncé que son équipe travaillait sur une version du compilateur TypeScript portée sur Go, qui devrait être publiée sous le nom de TypeScript 7.0. En décembre de la même année, il a été annoncé sur le blog de l'entreprise que TypeScript 6.0 serait la dernière version écrite en TypeScript lui-même, et que TypeScript 7.0 serait la première version basée sur Go.
L'annonce de TypeScript 7.0 Beta est importante non seulement parce qu'elle fait avancer le calendrier de publication de TypeScript 7, mais aussi parce qu'elle officialise l'abandon de l'implémentation de longue date basée sur JavaScript. Dans le billet officiel publié le 21 avril, Microsoft a indiqué que cette version bêta reposait sur « une base entièrement nouvelle », créée en portant le code source existant de TypeScript vers Go, tout en conservant le même comportement de vérification des types et la même sémantique auxquels les développeurs sont déjà habitués.
« Nous sommes ravis d’annoncer la sortie de TypeScript 7.0 Beta. Si vous n’avez pas suivi le développement de TypeScript 7.0, sachez que cette version est importante car elle repose sur une base entièrement nouvelle. Au cours de l'année écoulée, nous avons porté le code source existant de TypeScript vers Go. Grâce à la combinaison de la vitesse du code natif et du parallélisme en mémoire partagée, TypeScript 7.0 est souvent environ 10 fois plus rapide que TypeScript 6.0. », a déclaré Daniel Rosenwasser, chef de produit principal chez Microsoft.
Microsoft a également profité du lancement de cette version bêta pour affirmer de manière directe que le compilateur était prêt, alors qu'il s'agit d'une version bêta. Dans l'annonce, Daniel Rosenwasser a écrit : « Ne vous laissez pas tromper par la mention « bêta » : vous pouvez probablement commencer à l'utiliser dès maintenant dans votre travail quotidien. Le nouveau code source Go a été méthodiquement porté à partir de notre implémentation existante plutôt que réécrit à partir de zéro, et sa logique de vérification des types est structurellement identique à celle de TypeScript 6.0. Cette parité architecturale garantit que le compilateur continue d'appliquer exactement la même sémantique à laquelle vous êtes déjà habitué. »
Il a ajouté que TypeScript 7.0 a « été évalué à l'aide de l'énorme suite de tests que nous avons constituée au cours de la dernière décennie, et est déjà utilisé dans de nombreuses bases de code comptant plusieurs millions de lignes, tant au sein de Microsoft qu'à l'extérieur. Il est extrêmement stable, hautement compatible et prêt à être mis à l'épreuve dès aujourd'hui dans vos workflows quotidiens et vos pipelines d'intégration continue »
Selon Daniel Rosenwasser, l'équipe de TypeScript collabore depuis plus d'un an avec de nombreuses équipes internes de Microsoft, ainsi qu’avec des équipes d’entreprises telles que Bloomberg, Canva, Figma, Google, Lattice, Linear, Miro, Notion, Slack, Vanta, Vercel, VoidZero et bien d’autres, afin de tester des versions préliminaires de TypeScript 7.0 sur leurs bases de code. Rosenwasser affirme que « les retours ont été extrêmement positifs : de nombreuses équipes ont signalé des gains de vitesse similaires, réduisant considérablement leurs temps de compilation, et ont bénéficié d'une expérience d'édition beaucoup plus légère et fluide. »
Utilisation de TypeScript 7.0 Beta
Pour obtenir TypeScript 7.0 Beta, les utilisateurs peuvent l'installer via npm :
| Code : | Sélectionner tout |
npm install -D @typescript/native-preview@beta
Remarque : le nom du paquet sera éventuellement remplacé par typescript dans une prochaine version.
À partir de là, les utilisateurs peuvent exécuter tsgo à la place de l'exécutable tsc.
| Code : | Sélectionner tout |
1 2 | > npx tsgo --version Version 7.0.0-beta |
L'exécutable tsgo se comporte de la même manière que tsc de TypeScript 6.0 sur tout le code TypeScript, mais il est bien plus rapide, selon Microsoft.
Pour tester cette expérience d'édition, les utilisateurs peuvent installer l'extension TypeScript Native Preview pour VS Code. Microsoft affirme que la prise en charge par l'éditeur est extrêmement fiable et qu'elle est largement utilisée par de nombreuses équipes depuis plusieurs mois déjà. C'est un moyen simple et fluide d'essayer immédiatement TypeScript 7.0 sur la base de code. Elle repose sur les mêmes fondements que l'expérience en ligne de commande, ce qui permet aux utilisateurs de bénéficier des mêmes améliorations de performances dans leur éditeur que sur la ligne de commande. Microsoft précise par ailleurs qu'elle s'appuie également sur le protocole Language Server Protocol, ce qui facilite son exécution dans la plupart des éditeurs modernes, voire dans des outils tels que Copilot CLI.
Utilisation en parallèle avec TypeScript 6.0
Afin d'aider les utilisateurs à passer de TypeScript 6.0 à TypeScript 7.0, la version bêta est disponible via le paquet @typescript/native-preview en utilisant le point d'entrée tsgo. Cela permet de valider et de comparer facilement les résultats de tsc et de tsgo. Cependant, la version stable de TypeScript 7.0 sera publiée sous le paquet typescript et utilisera le point d'entrée tsc.
De plus, Microsoft indique que même si la version 7.0 Beta est presque prête pour la production, l'équipe TypeScript ne disposera pas d'une API programmatique stable avant au moins plusieurs mois, avec TypeScript 7.1. Dans ce contexte, elle s'est fixé comme priorité de garantir que TypeScript puisse fonctionner en parallèle avec TypeScript 6.0 dans un avenir proche, sans aucun conflit quant à « quel tsc est le bon ? ».
Dans le cadre du processus de transition de la version 6.0 vers la 7.0, Microsoft a publié un nouveau paquet de compatibilité, @typescript/typescript6. Ce paquet expose un nouveau point d'entrée, tsc6, afin que les utilisateurs puissent, si nécessaire, exécuter la prochaine version de TypeScript 7.0 (qui fournira un binaire tsc) en parallèle sans conflit de noms. Il réexportera également l'API TypeScript 6.0, ce qui permettra aux développeurs d'utiliser tsc pour TypeScript 7, tandis que les autres outils pourront continuer à s'appuyer sur la version 6.0.
Étant donné que certains outils, tels que typescript-eslint, s'attendent à ce que les importations soient effectuées directement depuis TypeScript via des dépendances entre pairs, Microsoft recommande d'utiliser des alias npm à cette fin. Les utilisateurs devraient pouvoir exécuter la commande suivante :
| Code : | Sélectionner tout |
npm install -D typescript@npm:@typescript/typescript6
ou modifiez leurs fichiers package.json comme suit :
| Code : | Sélectionner tout |
1 2 3 4 5 | {
"devDependencies": {
"typescript": "npm:@typescript/typescript6@^6.0.0",
}
} |
Microsoft indique qu'elle fournira à l'avenir des instructions plus précises concernant l'utilisation d'un tsc alimenté par TS7 parallèlement à un tsc6 alimenté par TS6.
Parallélisation et contrôles
TypeScript 7.0 exécute désormais de nombreuses étapes en parallèle, notamment l'analyse syntaxique, la vérification des types et la génération de code. Certaines de ces étapes, comme l'analyse syntaxique et la génération de code, peuvent généralement être effectuées indépendamment d'un fichier à l'autre. Ainsi, la parallélisation s'adapte automatiquement aux bases de code plus volumineuses avec une surcharge relativement faible. Cependant, Microsoft précise que toutes les étapes d'une compilation TypeScript ne se prêtent pas facilement à la parallélisation.
Parallélisation des vérificateurs de types
Selon l'équipe TypeScript, des étapes, comme la vérification des types, présentent des dépendances plus complexes entre les fichiers. La plupart des fichiers finissent par s'appuyer sur les mêmes informations de type provenant de leurs dépendances et de la portée globale ; par conséquent, exécuter les vérificateurs de types de manière totalement indépendante serait un gaspillage, tant en termes de calcul que de mémoire. D'autre part, la vérification des types s'appuie parfois sur l'ordre relatif des informations dans un programme ; par conséquent, une vérification des types effectuée à partir de zéro doit toujours vérifier les mêmes fichiers dans un ordre identique pour garantir les mêmes...
La fin de cet article est réservée aux abonnés. Soutenez le Club Developpez.com en prenant un abonnement pour que nous puissions continuer à vous proposer des publications.