Búsqueda de sitios web

typescript - El tipo de función con parámetros requeridos exige argumentos al llamar a la función


Soy un estudiante de TypeScript y estoy revisando diferentes fuentes y cursos, pero no pude descubrir cómo hacer que el compilador exija argumentos para una función tipada.

El ejemplo es muy simple: tengo una función que necesita dos cadenas firstName y lastName y se supone que debe devolver una concatenación de ellas:

type FuncType = (firstName: string, lastName: string) => string;
const getFullName: FuncType = () => "";

Soy consciente del hecho de que la definición de la función no está completa. Pero en este punto (de escribir la definición de la función) esperaría que el compilador me advirtiera (o me sugiriera) que me falta especificar dos parámetros (firstName y lastName) que obviamente son requeridos juzgando por el tipo FuncType.

Ese no es el caso. ¿Qué me estoy perdiendo?

Respuesta #1

Por extraño que parezca, esta es una característica de TS. Puedes leer un poco más sobre cómo se comparan las funciones en TS aquí.

En resumen, TS permite la asignación de funciones que tienen menos parámetros que el tipo asignable. La redacción de TS para esto es descartar parámetros.

La razón de esto es cómo se utiliza JS. Hay muchas APIs, algunas relacionadas con arrays, que permiten establecer callbacks que tienen menos parámetros. Si TS impusiera esto, gran parte del código existente se rompería.

La razón principal de esto es que JS acepta parámetros opcionales por defecto, por lo que una función que tiene menos parámetros siempre se puede asignar a una que tiene más.

Una nota: si realmente llamas a la función, entonces TS entrará en acción como se ve aquí

Artículos relacionados