Cómo tipificar correctamente una función callback en el parámetro de un método TypeScript
¡Hola a todos! Estoy empezando a entender TypeScript y me encontré con un problema. En mi clase hay un método que acepta una función callback. Quiero tipificar el parámetro para poder pasar cualquier función (con cualquier número de argumentos y valor de retorno), pero sin usar `any`, para mantener la verificación de tipos.
Esto es lo que intento:
```typescript
class EventBus {
on(eventName: string, callback: any) { // así funciona, pero no es seguro
// ...
}
}
const bus = new EventBus();
bus.on('click', (data: number) => console.log(data)); // no habrá error, incluso si se pasa un string
```
Entiendo que `any` desactiva completamente la verificación de tipos y es una mala práctica. Intenté usar `Function`, pero también es demasiado amplio y no permite trabajar bien con los argumentos.
En la documentación vi `(...args: any[]) => any`, pero me parece un parche. ¿Hay una forma más elegante? ¿Cómo declarar correctamente el tipo "cualquier función" en TypeScript para que: