可以使用装饰器试试
type Constructor = new (...args: any[]) => T;
function AutoSuper(constructor: T) {
return class extends constructor {
constructor(...args: any[]) {
super(...args);
}
};
}
export class ClassA {
constructor(
public s1: number,
public s2: number,
public s3: number,
) {
}
}
@AutoSuper
export class ClassB extends ClassA {
}
如果还有其他操作,可以试试
type Constructor = new (...args: any[]) => T;
function AutoSuper(constructor: T) {
return class extends constructor {
constructor(...args: any[]) {
super(...args);
this.initData(...args);
}
};
}
class ClassA {
public s1: number;
constructor(
s1: number,
s2: number,
s3: number,
) {
this.s1 = s1;
}
}
@AutoSuper
class ClassB extends ClassA {
public temp: number = 0;
initData(s1: number) {
this.temp = s1;
}
prt() {
console.log('this.s1', this.s1);
console.log('this.temp', this.temp);
}
}
const t = new ClassB(1, 2, 3);
t.prt();