我正在尝试创建一个通用的基本事件类:
class BaseEvent<T extends { (args?: any[]): void }> {
addEventListener(listener: T): { (): void } {
return () => { };
}
}
我可以扩展以指定限制回调的参数:
class ExtraSpecialEvent
extends BaseEvent<{ (foo: string): void }> {
}
但我似乎无法弄清楚语法。 Here is a playground demonstrating my problem
知道怎么做到这一点吗?
----更新----
正如@ murat-k在下面的回答,我的通用是要求一个数组...虽然这是我的问题,但它不是我的意思。我的意图是允许0个或更多any
args。我的问题的解决方案是将通用更改为:
class BaseEvent<T extends { (...args: any[]): void }> {
addEventListener(listener: T): { (): void } {
return () => { };
}
}
答案 0 :(得分:1)
您将args
声明为数组类型。您必须将其作为数组传递,例如
class ExtraSpecialEvent
extends BaseEvent<{ (foo: string[]): void }> {
}