É possível no TypeScript passar funções estritamente tipadas como parâmetros?
Olá a todos! Recentemente comecei a estudar TypeScript e me deparei com um problema ao trabalhar com funções de ordem superior. Eu tenho uma função que recebe outra função como argumento, e quero que o TypeScript verifique se a função passada tem os tipos corretos de parâmetros e valor de retorno.
Aqui está um exemplo do que estou tentando fazer:
```typescript
function applyOperation(x: number, y: number, operation: (a: number, b: number) => number): number {
return operation(x, y);
}
// Isso funciona
const sum = applyOperation(5, 3, (a, b) => a + b); // 8
// Mas e se eu quiser passar uma função que aceita strings?
const badResult = applyOperation(5, 3, (a, b) => a.toString() + b.toString()); // Sem erro, mas resultado incorreto
```
No último caso, o TypeScript não reclama, porque `a.toString() + b.toString()` retorna uma string, mas espera-se um número. Eu quero que o compilador verifique estritamente os tipos.
Também vi que às vezes usam essa sintaxe