Saltar al contenido

    ↑↓ mover · ⏎ abrir · esc cerrar

    TS2322

    No asignable

    Type 'number' is not assignable to type 'string'.

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

    El error más común de TypeScript. Un valor de un tipo se puso donde se requería otro, y ambos no son compatibles en esa dirección.

    Reproducción

    const value: string = 1

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

    Por qué lo dice el compilador

    La asignabilidad tiene dirección, y el mensaje siempre se lee origen-luego-destino. Ese orden es todo el diagnóstico: «`number` no es asignable a `string`» no dice nada sobre si funcionaría al revés. Cuando el mensaje sorprende suele ser porque se lee como una afirmación de igualdad — no lo es, es una afirmación sobre sustitución en un sentido, y de esa distinción se sigue la mitad de TypeScript.

    Arreglos

    1. 01
      const value: string = String(1)

      Convierte el valor, si lo que querías era una conversión. Es el arreglo honesto y el que sobrevive a una revisión.

    2. 02
      const value: string | number = 1

      O amplía el destino, si de verdad admite ambos. Una unión dice que la variable realmente puede ser cualquiera de los dos, lo cual es una afirmación distinta de un cast y mucho más segura.

    Conclusión

    Lee el mensaje como una flecha, no como un signo de igual. Origen a la izquierda, destino a la derecha, y la pregunta siempre es si el izquierdo puede sustituir al derecho.

    Adónde ir después

    Errores