Sobrecarga de funções em TypeScript: como declarar e usar corretamente?
Olá a todos! Comecei a estudar TypeScript depois de JavaScript e me deparei com um tópico que não entendo — sobrecarga de funções (function overloading).
Em JavaScript, estou acostumado a escrever funções que podem aceitar diferentes tipos de argumentos e verificar internamente com `typeof` ou `instanceof`. Por exemplo, tenho uma função que deve aceitar uma string ou um número e, dependendo disso, realizar operações diferentes. Em JS, eu fazia assim:
```typescript
function format(input) {
if (typeof input === 'string') {
return input.trim();
} else if (typeof input === 'number') {
return input.toFixed(2);
}
}
```
Mas em TypeScript, quero descrever os tipos para essa função. Tentei escrever:
```typescript
function format(input: string | number): string {
// ...
}
```
Isso funciona, mas ouvi dizer que em TypeScript existe sobrecarga "real" de funções, como em C++ ou Java. Tentei fazer assim:
```typescript
function format(input: string): string;
function