Construcciones
Variadic tuples
Esparcir y encajar tuplas por posición, que es como el nivel de tipos maneja listas.
Qué es
Una tupla conoce su propia longitud como tipo literal, el hecho sobre el que se construye todo tipo que cuenta. Combínalo con patrones de cabeza y resto y tienes recursión sobre una lista: quita un elemento, haz algo, recursa sobre lo que queda. Las listas de parámetros también son tuplas, y por eso las mismas técnicas reescriben firmas de funciones.
Ejemplos
Push<[1, 2], 3>
→[1, 2, 3]Tail<[1, 2, 3]>
→[2, 3]['a', 'b']['length']
→2La longitud literal. Un array respondería `number` aquí, y esa diferencia es toda la razón por la que las tuplas importan a nivel de tipos.
Cada tipo resuelto de arriba lo imprimió TypeScript 5.9.3, no se escribió a mano.
Lo que no hace
- No te deja indexar más allá del final. La longitud de una tupla es una promesa, y TS2493 es el compilador cumpliéndola.
- No recursa indefinidamente. Contar de uno en uno choca con el techo de instanciación alrededor de cincuenta, que es TS2589 y no es ajustable.
Conclusión
Cuando necesitas un número a nivel de tipos, casi siempre quieres una tupla que haces crecer y a la que luego preguntas la longitud. El contenido nunca se lee.