Tipo de argumento incorrecto
Argument of type 'number' is not assignable to parameter of type 'string'.Las palabras del propio compilador. Sin traducir — es la cadena que pegaste en el buscador.
El mismo fallo de asignabilidad que TS2322, pero en una llamada. Un código aparte porque el arreglo casi siempre está en otro sitio.
Reproducción
declare function take(value: string): void take(1)
La compilación afirma que esto emite exactamente este código.
Por qué lo dice el compilador
Un parámetro es una variable que la función declara en tu nombre, así que pasar un argumento es una asignación y obedece las mismas reglas. Tiene su propio código porque la pregunta interesante es distinta: con TS2322 normalmente elegiste el valor equivocado, y con TS2345 normalmente llamas a algo que espera una forma que aún no has construido. La función te ha dicho exactamente qué quiere, en la segunda mitad del mensaje.
Arreglos
- 01
declare function take(value: string): void take('1')
Pasa lo que pidió.
- 02
declare function take(value: string | number): void take(1)
O cambia la firma, si la función debería haberlo aceptado desde el principio. Solo merece la pena cuando la función es tuya y su cuerpo es realmente seguro para el tipo más amplio.
Conclusión
La segunda mitad del mensaje es una especificación. Constrúyela, en vez de recurrir a `as` para silenciar la primera mitad.