Avatar ·

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'"。我知道问题在于所有签名必须兼容,但如何正确实现构造函数重载? 也许有其他方法可以做到这一点?希望得到详细的解释和示例。