馃敟 OBJECT TYPES, TUPLES (TUPLAS)

Una tupla es otro tipo de Array que conoce exactamente cuantos elementos, de que tipo y en que posici贸n contiene el arreglo.

type Auto = [string, number];

Aqu铆 tenemos el tipo Auto que es una tupla que contiene un string y un number. Para TypeScript la tupla Auto describe un arreglo que contiene en la posici贸n 0 un string y en la posici贸n 1 un number.

type Auto = [string, number];

const prius: Auto = ["Toyota", 2015];
const civic: Auto = ["Honda", 2016];

console.log("El Prius es marca: ", prius[0], " y modelo: ", prius[1]);
console.log("El Civic es marca: ", civic[0], " y modelo: ", civic[1]);

Salida…

El Prius es marca:  Toyota  y modelo:  2015
El Civic es marca:  Honda  y modelo:  2016

Si intentamos escribir un tipo invalido, el compilador de TypeScript generar谩 un error. A diferencia de los arreglos de solo lectura, las tuplas si permiten que el valor de este tipo de arreglos sea modificado siempre que este se ajuste a la definici贸n de la tupla. Tambi茅n soporta operaciones como push.

Las tuplas son muy utilizadas dentro de las convenciones de API’s, cuando cada uno de los elementos tiene un sentido de obviedad. Esto brinda una buena flexibilidad cuando deseamos asignar nombres a partir de la destructuraci贸n.

const prius: [string, number] = ["Toyota", 2015];

const [marca, modelo] = prius;

console.log("La marca del prius es: ", marca);
console.log("El modelo del prius es: ", modelo);

Otro detalle que pudiera ser interesante es que las tuplas pueden tener propiedades opcionales utilizando el signo de interrogaci贸n ? despu茅s del tipo. Los elementos opcionales de una tupla pueden solo aparecer al final, y tambi茅n afectan el valor length (tama帽o) de la tupla.

type Auto = [string, number, string?];

const prius: Auto = ["Toyota", 2015, "Raul Jimenez"];
const civic: Auto = ["Honda", 2021];

console.log("El prius fue vendido a:", prius[2]);
console.log("El civic fue vendido a:", civic[2]);

Salida…

El prius fue vendido a: Raul Jimenez
El civic fue vendido a: undefined

Rest tuples (valores rest en tuplas)

Las tuplas pueden contener elementos rest, este puede utilizarse solo para el 煤ltimo elemento de una tupla.

type StringNumberBooleans = [string, number, ...boolean[]];
const a: StringNumberBooleans = ["a", 1, true, false, true];

Readonly tuples (tuplas de solo lectura)

Un detalle final acerca de las tuplas es que estas tambi茅n pueden ser de solo lectura readonly, y esto puede ser especificado de la siguiente forma.

type Auto = readonly [string, number];

const prius: Auto = ["Toyota", 2014];

prius[0] = "Honda"; // <- esta linea generaria un error