基类扩展不正确



嘿,我正在使用Deno并扩展EventTarget类,但我不希望最终用户能够获得EventTarget类上存在的功能,如addEventListener,dispatchEventremoveEventListener。我正在做这件事:

class Test extends EventTarget{
constructor(){
super()
}
private addEventListener(){}
private dispatchEvent(){}
private removeEventListener(){}
}

但是我得到错误:

Class 'Test' incorrectly extends base class 'EventTarget'.
Property 'addEventListener' is private in type 'Test' but not in type 'EventTarget'

…但我不希望最终用户能够获得存在于EventTarget类上的功能,如addEventListener,dispatchEventremoveEventListener

那么它不是EventTarget的子类。子类包含其超类的所有成员,该超类的一个实例(参见Liskov替换原则)。你应该能够在任何需要超类实例的地方使用子类实例。

你需要实现一个类的方法,你想从EventTarget(可能委托给私有的EventTarget实例),而不是子类化EventTarget

最新更新