
qui vient avec l’accélération du compilateur, la réduction de latence dans l’éditeur VS Code ainsi que plusieurs autres changements appréciables
Microsoft vient d’annoncer la disponibilité de la version bêta de TypeScript 3.9. Dans cette nouvelle version, l’équipe de développement du langage de scripts déclare avoir mis un accent sur les performances, la stabilité, la correction de bogues, l’ajout de plusieurs fonctionnalités, l’accélération du compilateur, ainsi que divers autres changements appréciés des développeurs.
Améliorations de l’inférence et de la méthode Promise.all
Dans les versions de TypeScript (environ 3.7), les déclarations de fonctions comme Promise.all et Promise.race ont été mises à jour. Mais cela a induit des erreurs en particulier lors de la combinaison des valeurs avec null ou undefined. Dans cette dernière version, ce bogue a été corrigé avec des améliorations dans le processus d’inférence. Si vous utilisez encore une ancienne version de TypeScript et que vous avez rencontré des problèmes liés à l’objet Promise, il est désormais recommandé de passer à la version 3.9.
Depuis quelques années, des travaux ont été entrepris afin de concevoir un mécanisme fiable pour définir un type conditionnel récursif capable de gérer correctement les types. Cela a conduit à l’adoption de l’opérateur de type Awaited<T>. Dans sa feuille de route, l’équipe de TypeScript avait prévu intégrer cette nouvelle fonctionnalité dans TypeScript 3.9. Mais après plusieurs analyses, les mainteneurs du code ont réalisé que la fonctionnalité Awaited a besoin de plus de travail de conception avant de pouvoir être déployée, car pour l’instant, la seule façon de rendre le type conditionnel Awaited récursif est d’introduire un type complexe. En conséquence, cette fonctionnalité a été retirée de la branche principale.
Améliorations de la vitesse de compilation et du temps d’application des mises à jour dans Visual Studio Code (VS Code) après le renommage de fichiers
Avec les anciennes versions de TypeScript, de nombreux développeurs ont pointé du doigt des latences relativement élevées lors de la compilation avec des paquets tels que Material-UI et les composants de style. Pour résoudre ces problèmes de performance, plusieurs solutions ont été proposées et ont permis de gagner chacune environ 5 à 10 % de temps de compilation sur certaines bases de code. En faisant le point après les améliorations apportées, l’équipe de TypeScript note une réduction d’environ 40 % du temps de compilation avec Material-UI.
À côté de l’amélioration de la vitesse de compilation, des améliorations ont été également apportées dans cette dernière version de TypeScript afin que le renommage des fichiers dans VS Code n’entraîne pas de lenteur dans l’éditeur de code. En effet, l’équipe de Visual Studio Code a rapporté que lors du changement de nom d’un fichier, la détermination des instructions d’importation à mettre à jour pouvait prendre entre 5 et 10 secondes. TypeScript 3.9 résout ce problème en modifiant les paramètres internes de la façon dont le compilateur et le service de langage mettent en cache les recherches de fichiers.
Vérifications des fonctions non appelées dans les expressions conditionnelles
Dans TypeScript 3.7, des vérifications de fonctions non appelées ont été intégrées pour signaler une erreur lorsque vous avez oublié d’appeler une fonction. Cependant, cette erreur ne s’applique qu’aux conditions dans les instructions if. Dans TypeScript 3.9 bêta, cette fonctionnalité est désormais prise en charge dans les conditions ternaires ( cond ? trueExpr : falseExpr).
Importations automatiques CommonJS en JavaScript
Selon Microsoft, une grande nouvelle amélioration dans TypeScript 3.9 bêta vient de l’importation automatique de fichiers JavaScript à l’aide de modules CommonJS. Dans les anciennes versions, TypeScript supposait toujours que, quel que soit votre fichier, l’utilisateur souhaitait une importation de style ECMAScript comme ceci :
Code JavaScript : | Sélectionner tout |
import * as fs from "fs";
Cependant, tout le monde ne cible pas les modules de style ECMAScript lors de l’écriture de fichiers JavaScript. Beaucoup de développeurs utilisent toujours des importations de style CommonJS, require(...), comme ici :
Code CommonJS : | Sélectionner tout |
const fs = require("fs");
TypeScript détecte désormais automatiquement les types d’importations que vous utilisez pour garder le style de votre fichier propre et cohérent.
Prise en charge des fichiers tsconfig.json
Dans l’analyse des fichiers, les éditeurs doivent déterminer à quel fichier de configuration appartient un fichier afin qu’elle puisse appliquer les options appropriées et déterminer quels autres fichiers sont inclus dans le projet en cours. Par défaut, les éditeurs qui s’appuient sur le serveur du langage TypeScript le font en remontant chaque répertoire parent pour trouver le fichier tsconfig.json. Mais un des cas où cette solution ne marche pas est lorsque le fichier tsconfig.json est utilisé pour simplement référencer d’autres fichiers tsconfig.json comme ici :
Code JSON : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 | // tsconfig.json { "files" : [ ] , "references" : [ { "path" : "./tsconfig.shared.json" } , { "path" : "./tsconfig.frontend.json" } , { "chemin" : "./tsconfig.backend.json" } , ] } |
Ce fichier qui ne fait rien d’autre que gérer d’autres fichiers de projet est souvent appelé « solution » dans certains environnements. Ici, aucun de ces fichiers tsconfig.*.json n’est récupéré par le serveur, mais il serait intéressant que le serveur du langage comprenne que le fichier .ts actuel correspond à l’un des projets mentionnés dans cette racine tsconfig.json. TypeScript 3.9 ajoute la prise en charge des scénarios d’édition pour cette configuration.
En plus des améliorations, nous avons plusieurs changements qui ont été intégrés et qui sont en rupture avec les anciennes versions de TypeScript. Ce sont notamment des changements au niveau de Getter/Setter, de l’opérateur de chaînage facultatif, des caractères de texte, des contrôles qui sont maintenant plus stricts pour les insertions et les propriétés facultatives, et bien d’autres choses encore.
Source : Microsoft
Et vous ?


Voir aussi





Vous avez lu gratuitement 5 articles depuis plus d'un an.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.