ProgramaciónDesarrollador Fullstack / Desarrollador Frontend

¿Cómo funciona la tipificación de funciones de callback en TypeScript y qué se debe considerar al tipificar los parámetros y los valores de retorno de los callbacks?

Supere entrevistas con el asistente de IA Hintsage

Respuesta

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) { // ... }
  • Todos los parámetros y el valor de retorno deben estar tipificados explícitamente.
  • Si la función puede retornar void (no retorna nada), esto debe ser indicado: () => void.
  • Los cierres, this y la sobrecarga también requieren consideración al tipificar.
  • Si la función con callback participa en interacciones externas (por ejemplo, React/Node.js), los tipos deben coincidir con las declaraciones externas.

Pregunta capciosa

¿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.

Ejemplos de errores reales por desconocer las sutilezas del tema


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.