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 |
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 |
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 |
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