Avatar ·

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: