Saltar al contenido
TS7015

    ↑↓ mover · ⏎ abrir · esc cerrar

    TS7015

    Array indexado con algo que no es un número

    Element implicitly has an 'any' type because index expression is not of type 'number'.

    Las palabras del propio compilador. Sin traducir — es la cadena que pegaste en el buscador.

    Los arrays describen posiciones numéricas; una clave de texto como `first` no es una de ellas.

    Reproducción

    const values = [1, 2]
    
    values['first']

    La compilación afirma que esto emite exactamente este código.

    Por qué lo dice el compilador

    Los objetos de JavaScript pueden tener propiedades arbitrarias, pero un tipo array solo promete sus elementos numerados y miembros estándar. TypeScript no inventará una firma de índice de cadena ni convertirá silenciosamente el resultado en `any`.

    Arreglos

    1. 01
      const values = [1, 2]
      
      const first = values[0]

      Usa una posición numérica cuando la colección está ordenada.

    2. 02
      const values: Record<string, number> = {
        first: 1,
        second: 2,
      }
      
      const first = values['first']

      Usa un objeto con claves o `Record` cuando los nombres, y no las posiciones, identifican los valores.

    Conclusión

    Elige la estructura que encaja con la búsqueda: arrays para posiciones, registros para nombres.

    Adónde ir después

    Errores