En TypeScript, se recomienda describir claramente los tipos para las funciones de callback. La definición de los tipos de los parámetros y del valor de retorno ayuda a prevenir errores:
type Callback = (event: string, id: number) => boolean; function useCallback(cb: Callback) { // ... }
void (no retorna nada), esto debe ser indicado: () => void.this y la sobrecarga también requieren consideración al tipificar.¿Es obligatorio indicar los tipos de los parámetros y del valor de retorno en la definición de la función de callback, si TypeScript puede inferirlos automáticamente?
Respuesta: No es obligatorio, TypeScript puede inferir los tipos de los argumentos de callback, sin embargo, para APIs públicas y funciones complejas que se componen, es extremadamente deseable especificar todos los tipos explícitamente. Esto facilita el mantenimiento y previene errores indeseados al cambiar los contratos de las funciones.
Historia
En el proyecto se utilizó un callback sin tipificar explícitamente el valor de retorno, y uno de los desarrolladores comenzó a retornar una cadena en lugar de un booleano esperado. Esto no provocó un error en la etapa de compilación debido al any por defecto, pero la lógica de funcionamiento de la función se rompió, causando un bug en producción.
Historia
En un gran proyecto de React, olvidaron tipificar explícitamente los parámetros de los callbacks de evento. Al pasar a una nueva versión de React, los tipos de eventos cambiaron y el código comenzó a compilarse con errores. Fue necesario corregir urgentemente la función de callback en todas las páginas.
Historia
En una aplicación de Node.js, no se tipificó el callback para trabajar con una función asíncrona: el valor obtenido fue erróneamente interpretado como string, aunque era un objeto error. La discrepancia de tipos llevó a la imposibilidad de manejar correctamente los errores.