TypeScript中构造函数的重载:如何正确声明多个变体?
你好!我刚开始学习TypeScript,遇到了构造函数重载的问题。文档中说TypeScript支持函数重载,但我无法让它在类的构造函数中工作。
我有一个`User`类,它应该接受不同的参数集:
- 姓名和年龄(必填)
- 仅姓名(年龄默认为0)
- 包含name和age字段的对象
这是我尝试做的:
```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报错:"Type '{name: string, age: number}' is not assignable to type 'string'"。我知道问题在于所有签名必须兼容,但如何正确实现构造函数重载?
也许有其他方法可以做到这一点?希望得到详细的解释和示例。