Como tipar corretamente uma função de callback nos parâmetros de um método TypeScript?
Olá a todos! Comecei a estudar TypeScript e me deparei com um problema ao tipar callbacks. Tenho um método que aceita uma função de callback e quero especificar seu tipo estritamente, mas não sei como fazer isso corretamente.
Aqui está um exemplo. Tenho uma classe `DataProcessor` que processa dados e chama o callback após a conclusão:
```typescript
class DataProcessor {
process(data: number[], callback: ???) {
const result = data.map(x => x * 2);
callback(result);
}
}
```
O problema é que não sei o que escrever no lugar de `???`. Se eu escrevo `callback: any`, o TypeScript para de verificar tipos e perco todas as vantagens da tipagem estática. Se escrevo `callback: Function`, também não obtenho autocomplete e verificação de argumentos.
Quero que o callback possa ser qualquer função, mas que o TypeScript verifique se ela aceita a quantidade correta de argumentos e retorna algo (ou nada). Como declarar o tipo corretamente para esse callback? Preciso descrever o tipo de retorno?