You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TypeScript中如何高效向父类构造函数传递参数?

TypeScript继承场景下构造函数的便捷写法

我喜欢TypeScript中在构造函数里定义属性的方式,TSC会自动生成对应的JavaScript赋值代码,就像定义department属性这样。但我好奇在继承场景下有没有同样便捷的方法?能不能在初始化子类时传入所有属性,不用重复父类的所有属性就能调用super?我不想手动写父类的所有属性来初始化类并满足super调用的要求。


尝试方案

在收到一些有用的反馈后,我试了下面这种写法,想避免在super调用里显式列出父类成员,想听听大家对这种方式的看法:

class Manager extends Employee {
  constructor(public department: number, empData: Employee) {
    super(empData.id, empData.name);
  }
}

最终解决方案

在@AluanHaddad的提示下,我深入研究了TSC的工具类型(Utility Types),找到了想要的方案:

class Employee {
  constructor(public id: number, public name: string) {}
}

class Manager extends Employee {
  constructor(
    public department: number,
    ...superClassData: ConstructorParameters<typeof Employee>
  ) {
    super(...superClassData);
  }
}

let myEmp = new Employee(1, "James"); // 基类实例
let myMng = new Manager(101, 2, "Jane"); // 子类实例

感谢大家的帮助!


内容的提问来源于stack exchange,提问作者user6167246

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 18:04:57