Skip to content

TypeScript renaît en Go

Le compilateur de TypeScript a été entièrement réécrit en Go, offrant une augmentation de performance stupéfiante de 10x. Ce changement architectural redéfinit la vitesse de vérification de type et l'expérience globale des développeurs.

Theo Brandt
Hero image for: TypeScript renaît en Go

En bref / Points clés

  • Le compilateur de TypeScript a été entièrement réécrit en Go, offrant une augmentation de performance stupéfiante de 10x.
  • Ce changement architectural redéfinit la vitesse de vérification de type et l'expérience globale des développeurs.

Pourquoi TypeScript s'est abandonné

TypeScript a abandonné ses racines JavaScript pour une réalité commerciale flagrante : JavaScript n'a jamais été conçu pour le travail lourd, lié au CPU, qui définit la vérification de type moderne. Cette inadéquation fondamentale a imposé un plafond de performance infranchissable, impactant directement la productivité des développeurs et les temps de compilation dans les grands projets. Reconnaissant cette limitation inhérente, l'équipe a cherché une base plus performante.

Les développeurs ne se sont pas lancés dans une réécriture complète. Au lieu de cela, ils ont exécuté une stratégie méticuleuse de « portage, pas de réécriture », migrant la logique TypeScript existante ligne par ligne vers Go. Cette approche chirurgicale a assuré une fidélité absolue, garantissant des sémantiques et un comportement de vérification de type identiques à ceux de son prédécesseur, TypeScript 6.0, évitant ainsi toute régression inattendue. Les résultats sont indéniables : une vérification de type sur le vaste dépôt Playwright, couvrant 1400 fichiers et 500 000 lignes de code, est passée de 6 secondes à un fulgurant 0,87 seconde avec TypeScript 7.0 RC.

Go est apparu comme le vainqueur incontestable face à des alternatives comme Rust en raison de son adéquation supérieure à cette architecture de compilateur spécifique et à la base de code TypeScript existante. Son modèle de concurrence robuste et sa disposition de mémoire efficace ont permis un portage significativement plus rapide de la logique établie. Cette capacité cruciale a permis le parallélisme à mémoire partagée, transformant le compilateur JavaScript auparavant mono-threadé en une puissance multi-cœur capable de distribuer la vérification de type sur plusieurs cœurs de CPU.

Des minutes aux millisecondes : la nouvelle vitesse

TypeScript 7 offre une vitesse brute, pulvérisant les benchmarks précédents. Le dépôt Playwright, une base de code robuste de 1400 fichiers, effectue désormais la vérification de type en un fulgurant 0,87 seconde. C'est une chute stupéfiante par rapport aux ~6 secondes de l'ancien compilateur, une amélioration de près de 7x qui redéfinit fondamentalement les attentes des développeurs.

Ce n'est pas simplement un JavaScript plus rapide ; c'est un changement architectural fondamental. Le code natif de Go et le parallélisme à mémoire partagée permettent à TypeScript de se libérer enfin de ses chaînes mono-threadées, exploitant simultanément plusieurs cœurs de CPU. Cette capacité était tout simplement impossible dans les limitations inhérentes de JavaScript, où les tâches liées au CPU entravaient les performances. Même en mode mono-threadé forcé, la réécriture en Go achève le benchmark Playwright en environ 2 secondes – toujours trois fois plus rapide qu'auparavant.

Les développeurs disposent désormais d'un contrôle précis sur cette nouvelle puissance. Le nouveau flag `--checkers` dicte le nombre de workers de vérification de type parallèles, par défaut quatre mais configurable pour les machines à grand nombre de cœurs. L'augmentation de cette valeur peut accélérer considérablement les compilations sur les systèmes dotés de ressources CPU suffisantes, bien qu'au prix d'une utilisation accrue de la mémoire.

Optimisant davantage les compilations complexes, le flag `--builders` gère les compilations de références de projets parallèles, crucial pour une compilation efficace des monorepos. La combinaison de `--checkers` et `--builders` permet une concurrence sans précédent, donnant aux ingénieurs les moyens d'ajuster les performances et d'extraire chaque milliseconde de leurs pipelines de compilation.

La mise à niveau : navigation fluide ou mers agitées ?

Les mises à niveau sans accroc sont rares, mais TypeScript 7 tient ses promesses. La réécriture en Go a méticuleusement préservé une logique de vérification de type identique, assurant une transition sans friction de la version 6. Les développeurs utilisant TypeScript 5 ou des versions antérieures rencontreront des changements cassants ; le chemin prescrit exige de passer d'abord à TypeScript 6, de résoudre les problèmes, puis de passer à la version 7.

Ce prérequis assure l'adoption des valeurs par défaut modernes de TypeScript 6, qui passent de recommandations à des exigences strictes dans la version 7. Préparez-vous à : - `strict: true` devenant la valeur par défaut immuable. - `module: esnext` comme nouvelle norme. - La suppression définitive de la cible `es5`. - La dépréciation des systèmes de modules hérités : AMD, UMD et SystemJS. C'est TypeScript qui se débarrasse de son passé.

Auteurs d'outils, marquez vos calendriers. Bien que le compilateur principal soit désormais alimenté par Go, son API programmatique stable est prévue pour TypeScript 7.1. D'ici là, un package de compatibilité dédié permet d'exécuter TypeScript 6 et 7 côte à côte, évitant les conflits pour les outils qui explorent les rouages internes du compilateur. Pour une analyse technique complète, consultez l'article Announcing TypeScript 7.0 RC - TypeScript.

Votre flux de travail de développement vient de passer au niveau supérieur

La réécriture en Go ne se limite pas à des commandes CLI plus rapides ; elle transforme fondamentalement votre expérience de codage quotidienne. Les développeurs ressentiront immédiatement la différence dans leurs IDEs, en particulier VS Code. Les temps de chargement des projets dans l'éditeur ont chuté d'environ 8x, rendant les grandes bases de code instantanément plus gérables.

Enjoying this? Get one like it in your inbox each morning.

one email a day · unsubscribe in two clicks · no third-party tracking

IntelliSense fournit désormais des complétions et des retours de type à des vitesses sans précédent, éliminant les micro-délais frustrants qui perturbaient auparavant le flux. Cela signifie moins d'attente, plus de codage et un flux de travail considérablement plus fluide qui a un impact direct sur la productivité des développeurs.

Ensuite, le mode `--watch` a fait l'objet d'une refonte complète et approfondie. Les itérations précédentes souffraient de problèmes de stabilité et de cohérence multiplateforme en raison du manque d'APIs natives de surveillance de fichiers de Go. L'équipe a conçu une solution en portant un observateur de fichiers robuste et performant depuis le C++ — la même technologie qui alimente le Parcel bundler.

Ce nouvel observateur sophistiqué assure une fiabilité à toute épreuve sur tous les systèmes d'exploitation. Les développeurs bénéficient désormais d'un retour quasi instantané sur les modifications de fichiers, rendant les cycles de développement itératifs véritablement fluides et réactifs, un composant essentiel pour toute configuration de développement moderne.

Cette réécriture en Go est plus qu'une simple amélioration des performances ; c'est un investissement stratégique, posant une nouvelle fondation haute performance. Grâce à la vitesse et à l'efficacité retrouvées du compilateur, TypeScript est désormais prêt à permettre une nouvelle génération d'outils. Attendez-vous à des avancées telles que le retour de type instantané et une assistance au code alimentée par l'IA radicalement plus rapide.

L'avenir du développement TypeScript vient de passer au niveau supérieur, promettant un environnement de codage réactif et intelligent qui était tout simplement impossible avec son prédécesseur lié à JavaScript. Les enjeux sont clairs : un compilateur plus rapide signifie des fonctionnalités plus ambitieuses et une expérience développeur plus convaincante.

Foire aux questions

Pourquoi le compilateur TypeScript a-t-il été réécrit en Go ?

L'équipe TypeScript a réécrit le compilateur en Go pour surmonter les limitations de performance de JavaScript pour les tâches gourmandes en CPU comme la vérification de type. Les performances natives et le modèle de concurrence de Go ont permis des améliorations massives de vitesse et un parallélisme de la mémoire partagée.

À quel point TypeScript 7 est-il plus rapide ?

TypeScript 7 est environ 10 fois plus rapide que les versions précédentes. Lors de benchmarks sur de grandes bases de code comme Playwright, les temps de vérification de type sont passés d'environ 6 secondes à moins de 0,9 seconde.

Y a-t-il des changements majeurs cassants dans TypeScript 7 ?

Si vous mettez à niveau depuis TypeScript 6, il n'y a pratiquement pas de changements cassants car la réécriture était un portage direct de la logique. Cependant, les valeurs par défaut introduites dans la v6 (comme 'strict: true') sont désormais des exigences strictes, et la mise à niveau depuis la v5 nécessitera de traiter ces changements en premier.

Comment TypeScript 7 améliore-t-il les performances ?

Le gain de performance principal provient du passage à un langage compilé (Go). De plus, le nouveau compilateur exploite le parallélisme à mémoire partagée, lui permettant d'utiliser plusieurs cœurs de CPU pour vérifier les types simultanément, une capacité que la version JavaScript à thread unique ne possédait pas.

Found this useful? Share it.

One short daily email of tools worth shipping. No drip funnel.

one email a day · unsubscribe in two clicks · no third-party tracking

🚀En savoir plus

Gardez une longueur d'avance en IA

Découvrez les meilleurs outils IA, agents et serveurs MCP sélectionnés par Stork.AI.

P.S. Vous avez créé quelque chose d'utile ? Listez-le sur Stork