在接受eventData的TypeScript中,jQuery onclick-event的预期处理程序是什么样的?
没有eventData的处理程序可以像这样定义:
let onClick(event: JQuery.Event): void
可以这样注册:
$("#btn").click(onClick);
如此注册时,它在my test fiddle中可以正常工作:
$("#btn").click("data3", onClick);
但是我的IDE抱怨道:
错误TS2345(TS)类型的参数'(事件:事件) =>任何'不能赋值给'EventHandler |类型的参数EventHandlerBase>”。输入'(event:Event)=>任何'不能分配给'EventHandlerBase>'。 参数'event'和't'的类型不兼容。 “事件”类型不能分配给“事件”类型。 类型'“data3”'不能分配给'null'类型。
我理解在第一种情况下(没有eventData),处理程序的类型是:
JQuery.EventHandler<TElement>
,在第二种情况下(使用eventData):
JQuery.EventHandler<TElement, TData>
其中TData
是eventData的类型(在我的示例中为字符串)。但是如何使用有效且类型安全的TypeScript语法声明这样的事件处理程序?