Avatar ·

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 等。