嘿,我正在使用Deno并扩展EventTarget
类,但我不希望最终用户能够获得EventTarget
类上存在的功能,如addEventListener
,dispatchEvent
和removeEventListener
。我正在做这件事:
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
,dispatchEvent
和removeEventListener
…
那么它不是EventTarget
的子类。子类包含其超类的所有成员,为该超类的一个实例(参见Liskov替换原则)。你应该能够在任何需要超类实例的地方使用子类实例。
你需要实现一个类的方法,你想从EventTarget
(可能委托给私有的EventTarget
实例),而不是子类化EventTarget
。