tsc · Compilación y tipos
El mensaje
error TS2345: Argument of type 'string' is not assignable to parameter of type 'number'.
Qué significa
El tipo que la función acepta y el tipo que pasaste son distintos, y el mensaje los nombra en orden: primero lo que diste, después lo que quería. El caso más frecuente con diferencia es un valor de un campo de formulario, de la cadena de consulta de una URL o de JSON que llega como texto donde se espera un número. Convertir una vez en la frontera es la respuesta, pero Number(value) devuelve NaN en vez de lanzar cuando falla, así que hay que impedir que ese NaN siga viajando: Number.isFinite(n) es la comprobación que corresponde.
El arreglo
No hay un comando de una línea. La explicación dice qué revisar.
- Lo imprime
- tsc
- Compilación y tipos
- 10
Los errores de compilación son una herramienta que se niega antes de que nada se ejecute, así que no rompen nada en el momento en que aparecen, pero plantean dos preguntas: ¿arreglarás el tipo o la ruta para que coincidan con la forma real, o empujarás esa única línea con un as any o un comentario de supresión? Y es aquí donde las cosas que solo son ciertas en tu máquina —mayúsculas, extensiones y variables de entorno— se muestran por primera vez.
Cómo leer un mensaje de error
- Lee desde la primera línea. Cuanto más abajo, más son las tripas de la herramienta; la causa suele estar arriba.
- Si hay un archivo y un número de línea, empieza ahí: no el marco superior de la pila, sino la línea más alta que nombre un archivo tuyo.
- Busca el mensaje literal, pero quita antes tus rutas y nombres de variables: eso es lo que impide que la búsqueda coincida.
- La misma condición se redacta distinto según la versión. Si los resultados no cuadran, añade el número de versión.
- Antes de pegar un arreglo, comprueba qué descarta. Algunos no se pueden deshacer.
Preguntas frecuentes
Q. ¿Qué significa «error TS2345: Argument of type 'string' is not assignable to parameter of type 'number'.»?
El tipo que la función acepta y el tipo que pasaste son distintos, y el mensaje los nombra en orden: primero lo que diste, después lo que quería. El caso más frecuente con diferencia es un valor de un campo de formulario, de la cadena de consulta de una URL o de JSON que llega como texto donde se espera un número. Convertir una vez en la frontera es la respuesta, pero Number(value) devuelve NaN en vez de lanzar cuando falla, así que hay que impedir que ese NaN siga viajando: Number.isFinite(n) es la comprobación que corresponde.
Q. ¿Cómo se arregla?
No hay comando de una línea. La explicación de arriba dice qué revisar.
Q. ¿Qué herramienta lo imprime?
tsc. Está en Compilación y tipos y el mensaje tiene 14 palabras.