Les Tuples en TypeScript

Introduction aux Tuples

Dans TypeScript, les tuples représentent des structures de données qui se comportent comme des tableaux, mais avec une taille fixe ainsi qu'un type spécifié pour chaque élément. Cela les distingue des tableaux classiques, car ils permettent de maintenir un ensemble précis de types pour chaque position.

Caractéristiques Principales

Les tuples possèdent deux caractéristiques fondamentales :

  1. Taille Fixe : Ils connaissent leur taille et le nombre d'éléments qu'ils contiennent.
  2. Types Définis : Chaque élément a un type de données préétabli.

Syntaxe des Tuples

La syntaxe des tuples permet d'inclure des types variés dans une seule structure. Par exemple :

let myTuple: [string, number, boolean] = ["1", 2, true];

Ici, les valeurs "1", 2 et true correspondent respectivement aux types string, number et boolean, dans cet ordre.

Décomposition d'un Tuple

Tout comme les tableaux et les objets, les tuples peuvent être décomposés en plusieurs variables qui représentent chaque élément et leur type. Considérons l'exemple d'une variable appelée popStar :

const popStar: [string, number, string, boolean] = [  'Lil Nas X',  22,  'Old Town Road',  true,];
const [popStarName, age, popSingle, stillActive] = popStar;
console.log(`${popStarName} a ${age} ans.`);
console.log(`Ils sont ${stillActive ? 'toujours actifs dans l'industrie' : 'plus actifs dans l'industrie'}.`);
console.log(`Une de leurs chansons les plus célèbres est ${popSingle}.`);

Cela produira les sorties suivantes : - Lil Nas X a 22 ans. - Ils sont toujours actifs dans l'industrie. - Une de leurs chansons les plus célèbres est Old Town Road.

Stockage des Valeurs Retourées dans des Tuples

Les tuples s'avèrent particulièrement utiles lorsqu'il s'agit de représenter plusieurs valeurs de retour d'une fonction. Par exemple, considérons la fonction positiveDifference qui retourne à la fois un nombre et un booléen :

function positiveDifference(left: number, right: number): [number, boolean] {
  return left > right ? [left - right, true] : [right - left, false];
}
const [difference, isPositive] = positiveDifference(7, 49);
difference; // Type: number, Valeur: 42
isPositive; // Type: boolean, Valeur: false