Microsoft annonce la disponibilit� de TypeScript 4.4 avec une analyse plus approfondie du flux de contr�le
et le type unknown par d�faut
Environ six semaines apr�s la premi�re version b�ta, et apr�s une version candidate le 12 ao�t dernier, Microsoft a publi� la version officielle de TypeScript 4.4 comme pr�vu. Parmi les nouvelles fonctionnalit�s notables, l'on note une analyse �tendue du flux de contr�le lors de la d�termination des types et la possibilit� d'utiliser des symboles comme signatures d'index. Il existe �galement des ajustements optionnels pour les blocs "try-catch" qui peuvent �tre activ�s. TypeScript 4.4 apporte de nombreuses autres fonctionnalit�s et am�liorations en plus de celles ci-dessus.
TypeScript est un JavaScript avec une syntaxe pour les types. Autrement dit, TypeScript est un langage de programmation fortement typ� qui s'appuie sur JavaScript pour vous offrir de meilleurs outils � n'importe quelle �chelle. TypeScript est un langage open source d�velopp� et maintenu par Microsoft depuis octobre 2012, qui publie maintenant une nouvelle version de son surensemble de JavaScript tous les deux mois. La prochaine version, TypeScript 4.5, est d�j� en cours de d�veloppement et devrait �tre publi�e au cours de la deuxi�me semaine de novembre 2021. En attendant, voici ci-dessus un aper�u des points forts de TypeScript 4.4.
Analyse du flux de contr�le des conditions d'alias
TypeScript utilise l'analyse du flux de contr�le pour d�terminer le type de variables. Gr�ce au concept de garde de type, le compilateur sait, dans un bloc ouvert par if (typeof arg === "string"){, que la variable arg doit �tre de type string. Cependant, Type Guard avait auparavant un horizon limit� et n'a pas fouill� dans les profondeurs du code. Par exemple, il n'a pas reconnu le type d�fini en dehors du bloc actuel, comme dans l'exemple suivant tir� du billet de blogue qui annonce la disponibilit� g�n�rale de TypeScript 4.4 :
Code TypeScript : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7 function foo(arg: unknown) { const argIsString = typeof arg === "string"; if (argIsString) { console.log(arg.toUpperCase()); } }
Bien que arg � l'int�rieur du bloc if doive �galement �tre de type string ici, le compilateur r�agit avec le message d'erreur "Error ! La propri�t� 'toUpperCase' n'existe pas sur le type 'unknown'". La raison en est que le contr�le de type r�el est effectu� par l'affectation � la constante en dehors du bloc if.
TypeScript 4.4 �tend l'analyse du flux de contr�le pour Type Guard, ce qui signifie que le compilateur traduit d�sormais le code sans messages d'erreur. L'analyse fonctionne pour les propri�t�s constantes et readonly ainsi que pour les param�tres inchang�s. En plus des v�rifications via typeof, le test de l'affiliation aux �l�ments individuels de l'union fonctionne �galement.
Indexation avec symbol
La deuxi�me innovation majeure de TypeScript 4.4 concerne les signatures d'index afin de cartographier, entre autres, les structures de type map. Auparavant, l'acc�s se faisait soit par des cha�nes de caract�res comme cl�s, soit par des nombres comme valeurs d'index avec [key : string] ou [index : number].
TypeScript 4.4 permet d�sormais �galement l'acc�s via les cl�s symbol :
Code TypeScript : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7 interface Colors { [sym: symbol]: number; } const red = Symbol("red"); const green = Symbol("green"); const blue = Symbol("blue");
De plus, les motifs de cha�nes de caract�res tels que "color-${string}" sont maintenant autoris�s pour la cha�ne de caract�res en tant que cl� en plus des �l�ments de cha�nes de caract�res ordinaires.
Blocs statiques
TypeScript 4.4 introduit les blocs statiques dans les classes, reprenant ainsi une norme ECMAScript pr�vue. Cette approche permet une initialisation suppl�mentaire des membres statiques des classes, comme dans l'exemple complet du blogue TypeScript :
Code TypeScript : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 class Foo { static #count = 0; get count() { return Foo.#count; } static { try { const lastInstances = loadLastInstances(); Foo.#count += lastInstances.length; } catch {} } }
Les blocs ont acc�s aux champs priv�s de la classe respective. Si les classes ont plusieurs blocs statiques, ils sont trait�s dans l'ordre dans lequel ils apparaissent dans le code source.
Type unknown par d�faut
Deux innovations sont initialement facultatives. L'un d'eux concerne les variables dans les blocs try-catch, qui jusqu'� pr�sent �taient du type any par d�faut lorsqu'elles �taient trait�es dans catch. Ils ont maintenant le type unknown par d�faut si le param�tre --useUnknownInCatchVariables est activ�. TypeScript 4.0, qui a �t� publi� il y a un peu moins d'un an, permettait d�j� la sp�cification explicite de any ou unknown pour le bloc catch.
Le deuxi�me ajustement � activer manuellement concerne les propri�t�s optionnelles : Le param�tre --exactOptionalPropertyTypes garantit que le compilateur n'autorise que le type explicitement sp�cifi� et non pas ind�fini comme auparavant. D'autres innovations, telles que l'option --help r�vis�e, sont disponibles dans cette nouvelle version du langage. TypeScript 4.4 est disponible via NuGet ou peut �tre install�e avec npm install typescript.
Source : TypeScript 4.4
Et vous ?
Que pensez-vous des changements intervenus dans TypeScript 4.4 ?
Voir aussi
TypeScript 4.4 b�ta est disponible et introduit l'indicateur --useUnknownInCatchVariable, qui remplace any, le type par d�faut des variables de clause catch, par unknown
TypeScript 4.3 est disponible et apporte le mot-cl� override pour qu'un dev puisse indiquer clairement s'il avait l'intention d'ajouter une nouvelle m�thode ou de remplacer une m�thode existante
Le cr�ateur de Python, Guido van Rossum, dit ce qu'il pense de Rust, Go, Julia et TypeScript et rel�ve des similitudes entre ces langages et Python
Partager