Typescript 向所有子类添加一个方法,而不更改父类

Typescript 向所有子类添加一个方法,而不更改父类,typescript,oop,Typescript,Oop,我有一个抽象类A,B和C都继承了A 现在我想用相同的方法扩展B和C,所以基本上我希望B和C继承一个扩展的a类,但我不想更改a、B和C 它可以与mixin一起工作,但是由于A是抽象的,mixin函数无法知道抽象方法实际上是在B和C中实现的,因此它自然会给我一个错误: 抽象类A{ 受保护a=1; 公共摘要hello():void; } B类扩展了A类{ 公众你好{ log('hello from B'); } } C类扩展了{ 公众你好{ log('hello from C'); } } 输入ACo

我有一个抽象类A,B和C都继承了A

现在我想用相同的方法扩展B和C,所以基本上我希望B和C继承一个扩展的a类,但我不想更改a、B和C

它可以与mixin一起工作,但是由于A是抽象的,mixin函数无法知道抽象方法实际上是在B和C中实现的,因此它自然会给我一个错误:

抽象类A{
受保护a=1;
公共摘要hello():void;
}
B类扩展了A类{
公众你好{
log('hello from B');
}
}
C类扩展了{
公众你好{
log('hello from C');
}
}
输入AConstructor=new(…args:any[])=>A;
函数扩展A(基:T){
返回类扩展了基{
公共剂量测定法(){
这个;
log('do something',this.a);
}
}
}
类ExtendedB扩展了ExtendedA(B){
}
类ExtendedC扩展了ExtendedA(C){
}
常数d=新的d();
常数e=新的e();
d、 doSomething();
//B你好
//做点什么
e、 doSomething();
//你好,C
//做点什么
test.ts:22:12-错误TS2653:非抽象类表达式未实现从类“A”继承的抽象成员“hello”。


我是不是看不到什么东西,还是没有办法用打字机来做

您的问题是
AConstructor
定义了一个扩展
a
的类型,
ExtendedA
正在扩展该类型,但没有类实现
a
(抽象)方法。请尝试改用接口:


接口接口{
你好;
}
输入AConstructor=new(…参数:any[])=>AInterface;
让ExtendedA=(Base:AConstructor):any=>{
返回类扩展了基{
公共剂量测定法(){
这个;
log(“做点什么”,this.a);
}
};
};

注意:受保护的财产不可从孙辈处获得,仅限儿童使用

定义继承B的新类D,B继承A:D->B->A并在Dno中定义新方法,我希望B和C子类得到这些新方法,我不打算复制粘贴D->B->A和E->C->A等中的方法(知道在我的例子中A子类比B和C子类多)