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
相关产品推荐
相关产品推荐

