La version 4.9 de TypeScript, le langage fortement typé de Microsoft qui repose sur JavaScript, est désormais disponible. Livrée le 15 novembre, après des étapes de bêta et de release candidate, cette mise à jour inclut un opérateur dénommé « satisfies » qui permet de détecter les erreurs. Avec « satisfies », les développeurs peuvent valider que le type d'une expression correspond à un certain type, sans modifier le type résultant de l'expression. Il peut servir à détecter des erreurs éventuelles, par exemple pour s'assurer qu'un objet possède toutes les clés d'un certain type, et pas davantage. 

Toujours dans TypeScript 4.9, l'opérateur « in » est un peu plus puissant quand il s'agit de réduire les types qui ne listent pas la propriété. Au lieu de les laisser tels quels, le langage va croiser leurs types avec Record< « property-key-being-checked », unknown>. TypeScript 4.9 renforce également certains contrôles sur la façon dont « in » est utilisé, afin de s'assurer que les clés de propriété valides sont utilisées. 

Autres fonctionnalités et améliorations de TypeScript 4.9 : 

- La surveillance des fichiers est alimentée par les événements du système de fichiers par défaut, ne revenant à l'interrogation que si les développeurs ne parviennent pas à mettre en place des surveillants basés sur les événements. Cela devrait permettre une expérience moins gourmande en ressources lors de l'exécution du mode --watch ou de l'exécution avec un éditeur alimenté par TypeScript comme Visual Studio Code ou Visual Studio. 

- Promise.resolve utilise désormais le type Awaited pour déballer les types du genre Promise qui lui sont transmis. Cela signifie qu'il renvoie plus souvent le bon type Promise, mais ce type amélioré peut casser le code existant s'il s'attendait à un type quelconque ou inconnu au lieu d'un type Promise

- TypeScript commet à présent des erreurs lors de comparaisons directes avec la valeur NaN et suggère une variation de Number.isNAN à la place.

- TypeScript prend maintenant en charge une fonctionnalité à venir dans ECMAScript, appelée auto-accessors ou accesseurs automatiques, qui sont déclarés comme les propriétés sur les classes, sauf qu'ils sont déclarés avec le mot-clé accessor

- Pour améliorer les performances, la fonction forEachChild a été réécrite pour utiliser une table de recherche de fonctions au lieu d'une instruction switch sur tous les nœuds syntaxiques. De plus, la façon dont TypeScript préserve les informations sur un type dans la branche vraie d'un type conditionnel a été optimisée. 

- Pour optimiser les types de substitution, les objets SubstitutionType ne contiennent plus la propriété substitute représentant la substitution effective. Au lieu de cela, ils contiennent uniquement la propriété constraint

De plus en plus populaire

TypeScript 4.9 peut être téléchargé via NuGet ou via NPM en utilisant la commande npm install -D typescript. Cette version succède à la version TypeScript 4.8 livrée le 25 août, qui apportait des améliorations en termes de correction et de cohérence, ainsi que des corrections en matière de surveillance des fichiers. La version bêta TypeScript 5.0 est prévue pour le 24 janvier 2023, la version candidate étant prévue pour le 28 février et la version de production pour le 14 mars.

TypeScript est en plein essor. Le rapport « 2022 State of Software Delivery » de CircleCI a révélé que TypeScript avait dépassé JavaScript comme langage devops le plus populaire. Selon CircleCI, c’est la convivialité de TypeScript qui explique sa montée en puissance et sa forte adoption par les développeurs.