IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

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

Le , par Bill Fassinou

31PARTAGES

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

Une erreur dans cette actualité ? Signalez-le nous !