TypeScript bêta 4.2 est disponible

Par:
fredericmazue

jeu, 21/01/2021 - 13:26

Microsoft vient d'annoncer la disponibilité de TypeScript 4.2 en version bêta. La principale nouveauté du langage consiste en de nouvelles possibilités pour définir des tuples avec éléments supplémentaires.

A la base le type tuple est destiné à modéliser des tableaux avec des longueurs et des types d'élément spécifiques. Par exemple :

// Un tuple qui contient deux nombres
let a: [number, number] = [1, 2];

// Un tuple qui contient une chaine, un nombre et un booléen.
let b: [string, number, boolean] = ["hello", 42, true];

Avec le temps, les tuples ont été enrichis de la possibilité d'être étiquetés pour déclarer un éventuel élément supplémentaire. Avec cette fonctionnalité les tuple n'ont donc plus une longeur spécifique. Par exemple :

// Un tuple étiqueté qui contient un ou deux chaînes
let d: [first: string, second?: string] = ["hello"];
d = ["hello", "world"];

Puis sont apparus les élements supplémentaires, dits 'rest elements'. Par exemple :

// Un tuple qui contient d'abord deux chaînes
// puis autant de booléens que souhaité
let e: [string, string, ...boolean[]];

e = ["hello", "world"];
e = ["hello", "world", false];
e = ["hello", "world", true, false, true];

Avant TypeScript 4.2 les éléments supplémentaires devaient figurer en fin de tuple. Avec TypeScript 4.2, les éléments supplémentaires, ou rest elements, peuvent être placés n'importe où dans un tuple. Par exemple :

let foo: [...string[], number];

foo = [123];
foo = ["hello", 123];
foo = ["hello!", "hello!", "hello!", 123];

let bar: [boolean, ...string[], boolean];
bar = [true, false];
bar = [true, "some text", false];
bar = [true, "some", "separated", "text", false];

A condition toutefois qu'un rest element ainsi placé soit le seul dans le tuple et qu'il ne soit pas suivi d'éléments optionnels.

La liste complète des nouveautés apportées par TypeScript 4.2 est dans l'annonce de Microsoft.