Technologie

TypeScript 7.0 compile 10 fois plus vite — Vue, Svelte et Angular devront patienter

Adrian Kessler

Le compilateur TypeScript dans VS Code mettait auparavant 125 secondes pour vérifier une copie fraîche de la base de code de l’éditeur. TypeScript 7.0 effectue la même tâche en 10,6 secondes. Microsoft n’a pas optimisé l’ancien code — il a porté l’intégralité du runtime du compilateur de JavaScript vers Go, débloquant un parallélisme multi-cœur qu’un moteur JavaScript ne peut pas fournir.

Le portage n’est pas une réécriture complète. Les ingénieurs de Microsoft ont décrit la logique de vérification de type comme structurellement identique à TypeScript 6.0 — les mêmes règles, le même comportement, traduits dans un langage qui peut répartir le travail entre les cœurs CPU. L’équipe a choisi Go car la base de code JavaScript originale, riche en fonctions, correspondait presque un à un aux idiomes de Go. Le nouveau runtime introduit également des indicateurs pour un contrôle explicite du parallélisme : passer –checkers 8 sur une station de travail moderne pousse la compilation de VS Code à une amélioration de 16,7x par rapport à TypeScript 6.0. La vérification de type CI de Slack est passée de 7,5 minutes à 1,25 minute. La compilation de Bluesky est passée de 24,3 secondes à 2,8 secondes. Le schéma se vérifie dans toutes les bases de code : les gains augmentent avec la taille du projet, car la limite est désormais le matériel, et non le runtime.

TypeScript 7.0 est livré sans API programmatique publique — l’interface que les outils de construction utilisent lorsqu’ils appellent le compilateur depuis leur propre code. Chaque vérificateur de type de template des grands frameworks web en dépend. L’outillage Volar de Vue, le service linguistique de Svelte, MDX, le vérificateur de template d’Angular : aucun d’entre eux ne fonctionne avec TypeScript 7.0. Des outils comme ts-morph et ts-jest, qui exposent les internes du compilateur TypeScript pour le refactoring et les tests, sont également cassés. Microsoft a confirmé que l’API de remplacement est prévue pour TypeScript 7.1, attendue en octobre. Les projets utilisant l’un de ces frameworks ou outils ne devraient pas encore mettre à jour.

Les configurations de projet plus anciennes font face à un ensemble distinct de blocages. TypeScript 7.0 transforme les options que la version 6.0 avait dépréciées en erreurs de construction franches : les cibles de compilation ES5, les formats de modules AMD et SystemJS, la résolution de modules classique et le mot-clé assert sur les instructions d’importation font tous échouer la construction immédiatement. Le nouveau tsconfig.json par défaut ne charge plus automatiquement les packages @types, ce qui signifie que les projets qui comptaient sur la découverte de type ambiante sans déclarer explicitement leurs dépendances de type échoueront silencieusement au moment de l’importation. Microsoft fournit un shim de compatibilité typescript@npm:@typescript/typescript6 pour les projets qui ont besoin de maintenir l’outillage TS6 en parallèle du nouveau compilateur.

Les projets qui franchissent ces obstacles — applications Node.js ou Deno simples, applications de navigateur non construites sur un système de template de framework, et bibliothèques sans dépendances d’API programmatique — peuvent mettre à jour avec un simple changement dans package.json. Le support de l’éditeur suit la même séparation : VS Code dispose d’une extension dédiée TypeScript 7 disponible dès maintenant, et le support intégré termine sa migration vers le Language Server Protocol, remplaçant l’ancienne conception TSServer. WebStorm et d’autres éditeurs qui dépendaient également de TSServer sont encore en train de travailler sur cette transition.

TypeScript 7.1, actuellement prévu pour octobre 2026, livrera la nouvelle API du compilateur dont les outils de Vue, Svelte, Angular et MDX ont besoin avant de pouvoir migrer. Quand elle arrivera, les gains de performance du portage Go de 15 mois atteindront l’ensemble de l’écosystème. En attendant, les pages de projet de Volar, SvelteKit et Angular recommandent de rester sur TypeScript 6.0.x.

Étiquettes: , , ,

Discussion

Il y a 0 commentaire.