Lección 74 — Arrays y Tuplas
🧠 Concepto
Section titled “🧠 Concepto”TypeScript ofrece dos formas principales de trabajar con colecciones ordenadas: arrays (listas de un mismo tipo) y tuplas (listas de longitud y tipos fijos).
Arrays
Section titled “Arrays”Se declaran con tipo[] o con la sintaxis genérica Array<tipo>:
let nombres: string[] = ['Ana', 'Luis', 'Pedro'];let numeros: Array<number> = [1, 2, 3];Ambas son equivalentes. La primera es más común y legible.
Tuplas
Section titled “Tuplas”Una tupla es un array con longitud fija y tipos específicos por posición:
let usuario: [string, number] = ['Ana', 25];// posición 0: string, posición 1: numberTuplas opcionales y rest
Section titled “Tuplas opcionales y rest”Puedes marcar elementos como opcionales con ?:
let coordenada: [number, number, string?] = [10, 20];coordenada = [10, 20, 'norte']; // también válidoUsar elementos rest (...) para indicar un número variable de elementos del mismo tipo:
let lista: [string, ...number[]] = ['edades', 25, 30, 35];Tuplas etiquetadas (TS 4.0+)
Section titled “Tuplas etiquetadas (TS 4.0+)”Puedes nombrar cada posición para mejorar la legibilidad:
let rango: [inicio: number, fin: number] = [10, 20];readonly
Section titled “readonly”Evita mutaciones con readonly:
let colores: readonly string[] = ['rojo', 'verde', 'azul'];// colores.push('amarillo'); ❌ Error💻 Ejemplo
Section titled “💻 Ejemplo”// Arrayslet frutas: string[] = ['manzana', 'pera', 'uva'];frutas.push('naranja'); // ✅let primera = frutas[0]; // tipo: string
// Tuplaslet persona: [string, number, boolean] = ['Ana', 30, true];let nombrePersona = persona[0]; // tipo: stringlet edadPersona = persona[1]; // tipo: number
// Tupla etiquetadalet respuesta: [codigo: number, mensaje: string] = [200, 'OK'];
// Tupla con opcionallet entrada: [string, number?] = ['admin'];entrada = ['admin', 1234]; // ambos válidos
// Tupla readonlylet punto: readonly [number, number] = [5, 10];// punto[0] = 3; ❌ Error: Index signature in type 'readonly [number, number]' only permits reading📝 Ejercicio
Section titled “📝 Ejercicio”Declara una tupla etiquetada llamada producto con: nombre (string), precio (number), y disponible (boolean). Inicialízala con valores reales. Luego crea un array de esa tupla representando un catálogo de 3 productos. Recorre el array e imprime cada producto.
⚠️ Nota
Section titled “⚠️ Nota”Las tuplas no existen en JavaScript. Al compilar, TS las traduce a arrays normales. La verificación de longitud y tipos solo ocurre en tiempo de compilación.
Si tienes un array que siempre tendrá exactamente dos elementos de tipos diferentes, usa una tupla en lugar de un array genérico. El código será más expresivo y recibirás mejores advertencias del compilador.