TypeScript:带有eventData的jQuery onClick

时间:2018-05-31 07:05:25

标签: jquery typescript jquery-events

在接受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语法声明这样的事件处理程序?

1 个答案:

答案 0 :(得分:0)

只需将事件目标和事件数据的类型添加为事件的通用属性:

Microsoft Azure

对于fiddle它没有任何区别,但它会让IDE和你自己开心!