我正在一个有角度的2 cli项目中工作,我必须创建一个插件的定义,因为它不存在它的类型.这个插件取决于已经自己输入的主库,它可以工作.
无论如何,
我有两个文件
主要的一个
图书馆类型文件A
export class A extends B {
constructor(...);
methodX(): void;
}
我需要为我的插件添加一个新方法,所以我的课程就像
export class A extends B {
constructor(...);
methodX(): void;
methodY(): void;
}
关键是我需要将其添加到单独的文件中.问题是在没有创建新类的情况下向现有类添加方法
如果我放
插件类型文件B
export class A extends B {
constructor(...);
methodX(): void;
}
要么
插件类型文件B
export class A extends B {
constructor(...);
methodX(): void;
methodY(): void;
}
它不起作用,有没有人如何实现覆盖类或使用新方法扩展它?
谢谢
解决方法:
您可以通过使用新方法创建接口并修改原型来实现.
像这样的东西:
class B { }
class A extends B {
constructor() {
super();
}
methodX(): void { };
methodY(): void { };
}
interface B {
newMethod(): void;
}
B.prototype.newMethod = function () { console.log('a') };
这允许您在进行时进行正确的输入.
new A().newMethod();
我做了一个游乐场示例here.