Más allá del final de la tupla
Tuple type 'Pair' of length '2' has no element at index '2'.Las palabras del propio compilador. Sin traducir — es la cadena que pegaste en el buscador.
Una tupla sabe exactamente cuánto mide, así que indexar más allá del final es un error de compilación y no un `undefined` que descubres después.
Reproducción
type Pair = [number, number] type Third = Pair[2]
La compilación afirma que esto emite exactamente este código.
Por qué lo dice el compilador
Esta es la diferencia entre una tupla y un array, expresada como error. `number[]` respondería `number` a cualquier índice porque no promete nada sobre la longitud; `[number, number]` promete exactamente dos, y esa promesa es lo que permite que `length` sea el literal `2` — el hecho sobre el que se construye todo tipo que cuenta en este sitio. El rigor que te detiene aquí es el mismo que hace útiles a las tuplas a nivel de tipos.
Arreglos
- 01
type Pair = [number, number] type Second = Pair[1]
Indexa dentro del rango. Los índices de tupla empiezan en cero, y el último es siempre `length - 1`.
- 02
type Pair = [number, number] type Any = Pair[number]
O pide cualquier elemento con `[number]`, que da la unión de todo lo que hay en la tupla y por construcción no puede salirse del rango.
Conclusión
Si estás indexando una tupla con un número que calculaste, probablemente quieras `[number]` — o un tipo recursivo que la recorra elemento a elemento.