Sobrecarga de construtor em TypeScript: como declarar várias opções corretamente?
Olá! Comecei a estudar TypeScript recentemente e me deparei com o problema de sobrecarga de construtor. A documentação diz que TypeScript suporta sobrecarga de funções, mas não consigo fazer isso funcionar para o construtor de uma classe.
Tenho uma classe `User` que deve aceitar diferentes conjuntos de parâmetros:
- Nome e idade (obrigatórios)
- Apenas nome (idade padrão 0)
- Um objeto com campos name e age
Aqui está o que estou tentando fazer:
```typescript
class User {
name: string;
age: number;
constructor(name: string, age: number);
constructor(name: string);
constructor(obj: {name: string, age: number}) {
this.name = name;
this.age = age;
}
}
```
TypeScript reclama: "Type '{name: string, age: number}' is not assignable to type 'string'". Entendo que o problema é que todas as assinaturas devem ser compatíveis, mas como implementar corretamente a sobrecarga de construtor?
Talvez haja outra maneira de fazer isso? Agradeço uma explicação detalhada com exemplos.