TypeScript 构造函数重载:如何正确实现?
大家好!我开始学习 TypeScript,遇到了构造函数重载的问题。在其他语言(如 Java 或 C#)中,我习惯可以声明多个具有不同参数的构造函数。但在 TypeScript 中,这并不相同。
假设我想创建一个 `User` 类,它可以通过字符串(email)或包含姓名和年龄的对象来初始化。我尝试这样写:
```typescript
class User {
constructor(email: string) {
// ...
}
constructor(name: string, age: number) {
// ...
}
}
```
但 TypeScript 报错:"Duplicate function implementation"。我知道 JavaScript 没有真正的重载,那该怎么办?
我需要能够以不同方式创建类:
1. `new User("john@example.com")` — 仅 email
2. `new User("John", 25)` — 姓名和年龄
3. `new User()` — 空对象(默认值)
如何在 TypeScript 中正确实现?我听说过 union types、rest parameters 等。