Sobrecarga de funções em TypeScript: como declarar e usar corretamente?
Olá a todos! Comecei a estudar TypeScript recentemente e me deparei com um problema ao tentar usar sobrecarga de funções. Tenho uma função `format` que deve funcionar de forma diferente dependendo do tipo dos argumentos passados:
1. Se uma string e um número forem passados — formatar a string com repetição.
2. Se duas strings forem passadas — combiná-las com um separador.
3. Se apenas um número for passado — retorná-lo como string com um prefixo.
Escrevi o seguinte código, mas o TypeScript reclama:
```typescript
function format(a: string, b: number): string;
function format(a: string, b: string): string;
function format(a: number): string;
function format(a: string | number, b?: string | number): string {
if (typeof a === 'number') {
return `ID: ${a}`;
}
if (typeof b === 'number') {
return a.repeat(b);
}
if (typeof b === 'string') {
return `${a} - ${b}`;
}
return a;
}
```
Erro: `This overload signature is not compatible with its implementation signature.` Eu