首页 文章

TypeScript:带有eventData的jQuery onClick

提问于
浏览
0

在接受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)=> any'不能赋值为'EventHandlerBase>' . 参数'event'和't'的类型不兼容 . “事件”类型不能指定为“事件”类型 . 类型'“data3”'不能分配给'null'类型 .

我理解在第一种情况下(没有eventData),处理程序的类型是:

JQuery.EventHandler<TElement>

在第二种情况下(使用eventData):

JQuery.EventHandler<TElement, TData>

其中 TData 是eventData的类型(在我的示例中为字符串) . 但是如何使用有效且类型安全的TypeScript语法声明这样的事件处理程序?

1 回答

  • 0

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

    let onClick(event: JQuery.Event<EventTarget, string>): void
    

    对于fiddle它没什么区别,但它会让IDE和你自己开心!

相关问题