Publication de la bêta de TypeScript 7.0 - TS environ 10 fois plus rapide grâce à un portage natif en Go
- Nouvelle implémentation native obtenue en portant le compilateur TypeScript existant en Go
- Bien qu’il s’agisse d’une « bêta », l’équipe souligne qu’elle est déjà suffisamment stable pour être essayée immédiatement dans le travail quotidien et en CI
- La nouvelle base de code n’est pas une réécriture (
rewrite), mais un portage méthodique de l’implémentation existante
- La logique de vérification de types est structurellement identique à celle de TypeScript 6.0
- Des performances parfois environ 10 fois supérieures à TypeScript 6.0
- Basé sur les performances du code natif et sur le parallélisme via mémoire partagée
- Déjà utilisé sur des bases de code totalisant des millions de LOC, en interne comme en externe chez Microsoft
- Tests préalables menés avec Bloomberg, Canva, Figma, Google, Linear, Notion, Slack, Vercel, etc.
- En plus de la CLI, l’expérience dans l’éditeur devient elle aussi plus légère et plus rapide
Utilisation
- Pour l’instant, installation via un package séparé
npm install -D @typescript/native-preview@beta
- Exécuter
tsgo à la place du tsc existant
- À terme, la version stable sera de nouveau distribuée via le package
typescript et le point d’entrée tsc
Utilisation en parallèle avec TypeScript 6.0
- La bêta 7.0 est fournie sous la forme de
@typescript/native-preview + tsgo
- Il est possible d’exécuter
tsc et tsgo côte à côte pour les comparer
- Dans la version stable, TS7 réutilisera le nom
tsc
- Le package
@typescript/typescript6, compatible TS6, est également proposé
- Les outils existants qui dépendent de l’API TypeScript peuvent, pour l’instant, continuer à utiliser l’API TS6
Limitations importantes
- La bêta 7.0 est proche d’un état prêt pour la production, mais il n’existe pas encore d’API programmatique stable
- L’objectif pour une API stable est au plus tôt après TypeScript 7.1, dans quelques mois
- Les outils/plugins qui dépendent directement de l’API TypeScript doivent faire la transition avec prudence
Parallélisation
- Plusieurs étapes sont parallélisées, notamment le parsing, la vérification de types et l’emit
- Ajout de l’option
--checkers pour ajuster le nombre de workers de vérification de types
- Ajout de l’option
--builders pour paralléliser les builds avec project reference
- Ajout de l’option
--singleThreaded pour une exécution en mono-thread
- L’effet est important sur les grandes bases de code et les monorepos, mais augmenter le parallélisme peut aussi accroître la consommation mémoire
Compatibilité par rapport à TypeScript 6.0
- TypeScript 7.0 vise à être compatible avec le comportement de vérification de types et de CLI de TypeScript 6.0
- L’objectif est qu’un code qui compile proprement avec TS6 compile de la même manière avec TS7
- Cependant, les nouveaux comportements par défaut de TS6 et le nettoyage des fonctionnalités obsolètes s’appliquent aussi
- Les changements de valeurs par défaut pour
strict, module, rootDir, types, etc. peuvent se faire sentir dans les projets existants
- Les changements concernant
rootDir et types, en particulier, doivent être vérifiés lors d’une migration
- Pour les projets qui utilisent d’anciennes cibles/configurations de module ou des options obsolètes, il est recommandé de passer d’abord par la transition vers TS6
Changements JavaScript/JSDoc
- La prise en charge de JS a été réorganisée pour être plus cohérente avec la manière dont les fichiers TypeScript sont analysés
- Certains traitements spéciaux liés à la syntaxe de style JSDoc/Closure et à d’anciens patterns JS ont été supprimés
- Les bases de code fondées sur JS + JSDoc doivent être vérifiées séparément
Support éditeur
- Extension TypeScript Native Preview disponible pour VS Code
- Comme elle repose sur la même base que la CLI, les mêmes gains de performance s’appliquent dans l’éditeur
- Prise en charge de l’auto-import, du hover, des inlay hints, du code lens, du JSX linked editing, etc.
- Comme cela repose sur LSP, l’intégration est aussi facile dans d’autres éditeurs/outils modernes
Feuille de route
- Une implémentation plus efficace de
--watch est prévue
- Des travaux sont prévus pour atteindre la parité sur le declaration emit des fichiers JS
- Les écarts de fonctionnalités dans l’éditeur doivent être comblés
- L’API programmatique stable arrivera après TypeScript 7.1
- La version stable de TypeScript 7.0 est visée d’ici environ 2 mois
- La RC est prévue quelques semaines auparavant
Aucun commentaire pour le moment.