Como tipar corretamente uma função callback em um parâmetro de método TypeScript?
Olá a todos! Estou começando a aprender TypeScript e me deparei com um problema. Na minha classe, há um método que aceita uma função callback. Quero tipar o parâmetro de forma que qualquer função possa ser passada (com qualquer número de argumentos e valor de retorno), mas sem usar `any`, para manter a verificação de tipos.
Aqui está o que estou tentando:
```typescript
class EventBus {
on(eventName: string, callback: any) { // funciona, mas não é seguro
// ...
}
}
const bus = new EventBus();
bus.on('click', (data: number) => console.log(data)); // nenhum erro, mesmo se passar uma string
```
Entendo que `any` desativa completamente a verificação de tipos e é uma má prática. Tentei usar `Function`, mas ele também é muito amplo e não permite trabalhar adequadamente com os argumentos.
Na documentação, vi `(...args: any[]) => any`, mas parece um hack. Existe uma maneira mais elegante? Como declarar corretamente o tipo "qualquer função" em TypeScript, de modo que: