Transcript
00:00:00TypeScript vient de publier une version candidate pour la version 7 et ce sera la version oĂč
00:00:04TypeScript n'est plus du TypeScript. Si vous n'étiez pas au courant, ils travaillaient sur la réécriture du
00:00:07compilateur TypeScript, passant de TypeScript lui-mĂȘme Ă Go, et apparemment, les rĂ©sultats sont 10 fois plus rapides.
00:00:12Ils prévoient de sortir TypeScript 7 le mois prochain, alors passons en revue ce qui a réellement changé,
00:00:17Ă quel point c'est rapide, et s'il y a des changements cassants Ă connaĂźtre avant de l'installer.
00:00:26Donc, si vous avez manqué la nouvelle sur le portage vers Go, ils ont commencé il y a environ un an,
00:00:29et le TL;DR est qu'ils ont réalisé que JavaScript n'a jamais été conçu pour le travail intensif lié au CPU
00:00:34qu'un vérificateur de types effectue. Ils ont donc commencé à le réécrire en Go avec un grand succÚs initial. Ils ont commencé par
00:00:39porter essentiellement l'implémentation existante de TypeScript, ligne par ligne, donc la logique
00:00:44de vĂ©rification de type Ă©tait structurellement identique et avait le mĂȘme comportement, et vous pouviez mĂȘme voir certaines
00:00:48des fonctions qui étaient presque identiques, à part le langage. Je suis aussi assez sûr que c'était avant
00:00:52qu'on puisse juste demander à Claude de migrer sa base de code vers le langage souhaité.
00:00:56Je te regarde, Bun. Les rĂ©sultats du portage parlent d'eux-mĂȘmes. Ici, j'ai le
00:01:00dépÎt Playwright, et si j'effectue une vérification de type en utilisant l'ancienne version de TypeScript, on peut voir que
00:01:04cela prend environ six secondes pour se terminer, et cela a parcouru 1400 fichiers et un demi-million de lignes de
00:01:08code. Si je passe maintenant Ă la version candidate sans rien changer Ă part cette commande,
00:01:12au total, cela a pris 0,87 seconde. C'est une amĂ©lioration sĂ©rieuse. Cela a aussi trouvĂ© exactement le mĂȘme nombre
00:01:18d'erreurs, les mĂȘmes erreurs, et a parcouru les mĂȘmes fichiers et lignes de code, donc ça fonctionne exactement
00:01:23de la mĂȘme maniĂšre que TypeScript 6. Le code natif de Go est simplement fondamentalement plus rapide que JavaScript pour une
00:01:27tĂąche comme celle-ci, mais cela leur permet aussi d'utiliser le parallĂ©lisme Ă mĂ©moire partagĂ©e. LĂ oĂč le compilateur JavaScript
00:01:32Ă©tait mono-thread, Go peut rĂ©partir cette vĂ©rification de type sur plusieurs cĆurs Ă la fois. Dans TypeScript
00:01:377, vous pouvez l'obliger Ă ĂȘtre mono-thread avec un flag, si jamais vous faites du dĂ©bogage
00:01:41ou si vous tournez sur une machine avec des ressources limitées. Et si je fais cela dans la base de code de Playwright
00:01:46ici avec TypeScript 7, on voit qu'en mono-thread, cela prend environ deux secondes, ce qui est
00:01:50toujours trois fois plus rapide qu'avant. En parlant d'exécution en parallÚle, ils exposent aussi
00:01:54un nouveau flag âcheckersâ qui vous permet de dĂ©finir combien de travailleurs de vĂ©rification de type peuvent fonctionner en parallĂšle,
00:01:58et cela est réglé par défaut sur quatre. Augmenter cela pourrait accélérer vos builds sur de plus grandes bases de code si vous
00:02:03avez beaucoup de cĆurs CPU, mais cela se fera au prix d'une utilisation mĂ©moire accrue. Si je rĂšgle les âcheckersâ
00:02:08sur 8 dans ce dépÎt Playwright, ce qui est le double du défaut, cela semble effectivement réduire encore d'un
00:02:12tiers le temps nĂ©cessaire. Il y a aussi un nouveau flag âbuildersâ pour parallĂ©liser les builds de rĂ©fĂ©rences de projets, aka construire
00:02:16plusieurs projets Ă la fois, et ce flag vous permet de contrĂŽler le nombre de âbuildersâ parallĂšles qui peuvent
00:02:20s'exĂ©cuter en mĂȘme temps. Il est bon de noter que si vous combinez cela avec les âcheckersâ que nous venons de voir, disons
00:02:24que vous en avez quatre de chaque, cela signifie que vous pouvez avoir jusqu'à 16 vérificateurs de type s'exécutant simultanément. à part
00:02:29les changements de code natif et le parallĂ©lisme, une autre grosse réécriture dans TypeScript 7 a Ă©tĂ© son mode âwatchâ.
00:02:34Lorsqu'ils ont porté vers Go, c'était un peu plus délicat car la bibliothÚque standard ne fournit pas
00:02:38d'API de surveillance de fichiers intégrée, et les bibliothÚques tierces qu'ils ont essayées avaient des problÚmes de
00:02:43stabilité, performance et support multiplateforme. L'équipe a donc regardé l'outil de surveillance de fichiers du bundler Parcel,
00:02:47que Microsoft utilise un peu dans VS Code, mais comme c'était en C++, ils ont également
00:02:53dû porter les parties nécessaires en Go également. La bonne nouvelle est qu'ils ont tout fait,
00:02:57et cela semble fonctionner vraiment bien, et mieux qu'avant. Ensuite, puisque c'est
00:03:01un changement de version majeure, vous pourriez vous attendre Ă beaucoup de changements cassants, surtout que c'est une grosse
00:03:05réécriture, mais je ne pense pas qu'il y en ait vraiment si vous passez de TypeScript 6 à 7. Si
00:03:10vous voulez passer de 5 Ă 7, il y en aura pas mal, donc ils recommandent de
00:03:14passer d'abord Ă la version 6, de tout faire fonctionner, et ensuite le passage Ă la version 7 devrait se faire sans problĂšme. Quelques-uns
00:03:19des gros changements dans TypeScript 6 étaient la suppression de la cible ES5, la suppression de baseUrl et la dépréciation des systÚmes
00:03:24de modules AMD, UMD et SystemJS. Ils ont aussi mis âstrictâ Ă âtrueâ par dĂ©faut, dĂ©fini âmoduleâ sur âesnextâ par dĂ©faut,
00:03:31et la cible par dĂ©faut est la version ECMAScript stable actuelle prĂ©cĂ©dant immĂ©diatement âesnextâ. C'Ă©tait
00:03:36essentiellement laisser le passé derriÚre soi et moderniser TypeScript, ce que j'apprécie vraiment car
00:03:40parfois, essayer de supporter des projets hérités dans chaque version que vous créez peut vraiment ralentir le
00:03:45progrĂšs d'un outil. En regardant le reste de cet article de blog, il semble que la seule nouvelle
00:03:49fonctionnalitĂ© ou changement qui concerne rĂ©ellement le langage TypeScript lui-mĂȘme, c'est que les types de littĂ©raux de gabarit
00:03:53préservent désormais les points de code Unicode. Essentiellement, avant TypeScript 7, TypeScript séparait en unités de code UTF-16,
00:03:59donc cela finissait par couper une emoji en deux, et vous vous retrouviez avec ces types bizarres pour les tĂȘtes
00:04:04et les queues. Dans TypeScript 7, cependant, cela sépare sur des points de code entiers, donc des caractÚres complets,
00:04:09donc maintenant l'emoji est préservée et la séparation est à peu prÚs comme vous vous y attendriez. Je serais
00:04:13honnĂȘtement incroyablement impressionnĂ© si l'un d'entre vous a dĂ©jĂ rencontrĂ© cela en utilisant TypeScript.
00:04:18Dans l'ensemble, ces changements devraient rendre tout ce qui utilise TypeScript beaucoup plus rapide, comme TypeScript
00:04:22dans votre éditeur, surtout pour les grands projets. La version stable est prévue dans environ un mois,
00:04:27mais une API programmatique stable, donc ce que les auteurs d'outils utilisent pour construire au-dessus du compilateur,
00:04:32arrive dans la version 7.1. à cause de cela, il y a aussi un paquet de compatibilité, donc vous pouvez exécuter
00:04:36TypeScript 6 et 7 cĂŽte Ă cĂŽte sans rencontrer de conflits. Dites-moi ce que vous pensez de tout
00:04:41cela, et je suis curieux de savoir si vous avez déjà trouvé que TypeScript semblait lent. Dites-le-moi dans
00:04:44les commentaires. Pendant que vous y ĂȘtes, abonnez-vous, et comme toujours, on se voit dans la prochaine.
Community Posts
No posts yet. Be the first to write about this video!
Write about this video