En TypeScript, los arreglos se pueden tipificar estrictamente especificando el tipo de los elementos a través de la notación type[] o Array<type>. Por ejemplo:
let arr: number[] = [1, 2, 3];
Las tuplas son arreglos con una longitud fija y tipos para cada elemento:
let tuple: [string, number] = ["age", 30];
Inconvenientes:
push no está prohibido, pero el resultado ya supera los límites de la tipificación garantizada.¿Pueden las tuplas en TypeScript contener un número variable de elementos, y cómo afectará esto a la tipificación?
Respuesta: Sí, las tuplas pueden contener elementos restados utilizando la sintaxis ..., pero todavía requieren una tipificación estricta para los elementos restantes:
let tuple: [string, ...number[]] = ["id", 10, 20, 30];
Sin embargo, los elementos antes de ... deben ser especificados, y el tipo para el resto del arreglo debe ser único.
Historia
En un proyecto de comercio electrónico, un desarrollador intentó guardar más de dos elementos en una tupla [string, number] utilizando push. Esto no dio un error en la etapa de compilación, pero rompió la función que esperaba exactamente dos elementos, lo que condujo a errores en el procesamiento de pedidos.
Historia
Una función devolvía una tupla [string, number], sin embargo, el consumidor esperaba un arreglo de cadenas. La discrepancia de tipos produjo un error difícil de identificar, lo que causó que se enviaran valores incorrectos a producción.
Historia
Al migrar código de JavaScript a TypeScript, se utilizaron arreglos en lugar de tuplas para devolver múltiples valores de diferentes tipos. Esto rompió la tipificación estricta y resultó en la aparición de errores en el código posterior, que confiaba en el orden y tipo de los valores.