La version 5.1 de TypeScript disponible depuis le 1er juin est maintenant taillée pour des projets en production. Cette dernière facilite les retours implicites pour les fonctions retournant undefined et autorise des types non apparentés pour les accesseurs getters et setters. TypeScript 5.1 apporte également une série d'améliorations de codage pour le langage fortement typé de Microsoft qui s'appuie sur JavaScript. Cette simplification des retours implicites met fin à une situation dans laquelle les seules fonctions qui pouvaient n'avoir absolument aucune déclaration de retour étaient les fonctions à retour nul et les fonctions à retour quelconque. Cela signifiait que même si un développeur indiquait explicitement qu'une fonction renvoyait une valeur non définie, il fallait au moins une déclaration de retour. Ce comportement posait un problème si une API attendait d'une fonction qu'elle renvoie une valeur non définie, auquel cas, il fallait au moins un retour explicite de la valeur non définie ou une déclaration de retour et une annotation explicite.

Selon Microsoft, « ce mode de fonctionnement était source de confusion et de frustration ». Avec TypeScript 5.1, si une fonction n'a pas d'expression de retour et qu'elle est transmise à quelque chose qui s'attend à ce qu'une fonction renvoie une valeur indéfinie, TypeScript déduit une valeur indéfinie pour le type de retour de cette fonction. TypeScript 5.1 autorise désormais des types totalement indépendants pour les propriétés d'accès « get » et « set », à condition qu'elles aient des annotations de type explicites. Cela fait suite à TypeScript 4.3 qui permet à une paire d'accesseurs « get » et « set » de spécifier deux types différents. TypeScript 5.1 est disponible via NuGet ou via NPM : npm install -D typescript.

Les autres fonctionnalités et améliorations de TypeScript 5.1

- TypeScript fournit à présent des snippets de complétions lors de la saisie d'une balise @param JSDoc dans les fichiers TypeScript et JavaScript. Cela peut alléger la saisie et les sauts dans le texte quand les développeurs documentent le code ou ajoutent des types JSDoc en JavaScript ;

- TypeScript 5.1 évite d'effectuer l'instanciation de type dans les types d'objets connus de façon à ne pas contenir de références à des paramètres de type extérieurs. Cela pourrait ainsi éviter de nombreux calculs inutiles et réduire de plus de 50 % le temps nécessaire à la vérification des types dans le répertoire docs de l'interface utilisateur matérielle Material UI ;

- Quand il vérifie si un type source fait partie d'un type union, TypeScript 5.1 effectue d'abord une recherche rapide en utilisant un identifiant de type interne pour cette source. Si la recherche échoue, TypeScript vérifie la compatibilité avec tous les types union ;

- TypeScript ne fonctionne plus que sur Node.js 14.17 et plus ;

- Les noms d'attributs à espace de noms sont désormais pris en charge lors de l'utilisation de la syntaxe JSX. Toujours pour JSX, TypeScript 5.1 recherche dorénavant un type appelé JSX.ElementType, qui spécifie précisément ce qui est valide pour être utilisé comme balise dans un élément JSX ;

- L'édition liée des noms de balises JSX permet à un éditeur de modifier automatiquement plusieurs emplacements en même temps ;

- Quand la stratégie de recherche de modules spécifiée par TypeScript est incapable de résoudre un chemin, elle résout à présent les paquets relatifs aux typeRoots spécifiés.

Une implémentation encore à améliorer

Cette version de production arrive après une version candidate livrée le 18 mai 2023 et à une version bêta livrée le 18 avril 2023. Depuis l'itération candidate, les concepteurs de TypeScript ont légèrement modifié les refactorings intégrés pour déplacer les déclarations vers des fichiers existants, mais Microsoft estime que l’implémentation a encore besoin d’être améliorée. Par conséquent, pour le moment, les développeurs ne peuvent pas y accéder dans la plupart des éditeurs et ne peuvent le faire que via la version dite « nightly » de TypeScript. TypeScript 5.2 ou un futur patch de la version 5.1 devrait réintroduire ce refactoring. La déclinaison 5.0 précédente de TypeScript, axée sur l’utilisation des modules ECMAScript, a été publié en mars 2023.

TypeScript 5.1 est disponible via NuGet ou via NPM en utilisant la commande npm install -D typescript.