Publication de la bêta de TypeScript 7.0
(devblogs.microsoft.com)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 dutscexistantnpx tsgo --version
- À terme, la version stable sera de nouveau distribuée via le package
typescriptet le point d’entréetsc
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
tscettsgocô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
--checkerspour ajuster le nombre de workers de vérification de types - Ajout de l’option
--builderspour paralléliser les builds avec project reference - Ajout de l’option
--singleThreadedpour 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
rootDirettypes, 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
--watchest 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.