Saltar al contenido

    ↑↓ mover · ⏎ abrir · esc cerrar

    TS2493

    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

    1. 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`.

    2. 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.

    Adónde ir después

    Errores