La version RC de TypeScript 7.0 a été publiée.
(devblogs.microsoft.com)Titre : annonce de la RC de TypeScript 7.0 - réécrite en Go, environ 10 fois plus rapide
Texte :
Microsoft a annoncé la Release Candidate de TypeScript 7.0. Le point central est le portage, au cours de l’année écoulée, de la base de code existante depuis TypeScript (la base bootstrap compilée en JS) vers Go.
La combinaison de la vitesse du code natif et du traitement parallèle à mémoire partagée offre des performances environ 10 fois supérieures à TypeScript 6.0.
Installation immédiate possible avec npm install -D typescript@rc
Compatibilité et stabilité
Il ne s’agit pas d’une réécriture complète depuis zéro, mais d’un portage systématique de l’implémentation existante, et la logique de vérification de types reste structurellement identique à celle de 6.0.
Le tout a été validé par l’énorme suite de tests accumulée sur 10 ans, et est déjà utilisé sur des bases de code de plusieurs millions de lignes, chez Microsoft comme en dehors.
De nombreuses entreprises comme Bloomberg, Canva, Figma, Google, Linear, Notion, Slack et Vercel ont testé des builds préliminaires pendant plus d’un an, avec des retours globalement positifs, notamment une forte réduction des temps de build.
Contrôle de la parallélisation
Le parsing, la vérification de types et l’emit sont exécutés en parallèle. Le flag --checkers permet d’ajuster le nombre de workers du vérificateur de types (4 par défaut), le flag --builders parallélise les builds de project references (utile pour les monorepos), et --singleThreaded permet de forcer le mode mono-thread.
Mode --watch amélioré
Le file-watcher du bundler Parcel a été porté en Go, ce qui améliore fortement les performances de surveillance de fichiers en cross-platform.
Utilisation en parallèle avec 6.0 (side-by-side)
L’API programmatique stable n’est prévue qu’en 7.1, dans quelques mois.
Le package de compatibilité @typescript/typescript6 fournit l’exécutable tsc6, ce qui permet d’utiliser 6.0 et 7.0 ensemble sans conflit. L’usage d’un alias npm est recommandé.
Principaux changements de valeurs par défaut / breaking changes
strict passe à true par défaut, module à esnext par défaut, et stableTypeOrdering est activé de manière forcée.
target: es5, downlevelIteration, moduleResolution: node/node10/classic, module: amd/umd/systemjs, baseUrl et de nombreuses autres options dépréciées deviennent des erreurs bloquantes.
Les types de template literals gèrent désormais naturellement les points de code Unicode ("😀abc" → ["😀", "abc"]).
La prise en charge de JavaScript (basée sur JSDoc) a été retravaillée pour être plus cohérente avec l’analyse des fichiers .ts.
Expérience éditeur
L’extension TypeScript Native Preview pour VS Code est proposée, avec une base LSP exploitant le multithreading. Par rapport à 6.0, le nombre de commandes du language server en échec aurait été réduit de plus de 20 fois.
Calendrier : la version finale 7.0 est prévue dans environ un mois. Les retours de test sur des projets réels sont activement sollicités.
Aucun commentaire pour le moment.