代码之家  ›  专栏  ›  技术社区  ›  Jack Miller

typescript:jquery onclick with eventdata

  •  0
  • Jack Miller  · 技术社区  · 6 年前

    在接受eventdata的typescript中,jquery onclick事件的预期处理程序是什么样子的?

    没有eventData的处理程序可以如下定义:

    let onClick(event: JQuery.Event): void 
    

    可以这样注册:

    $("#btn").click(onClick);
    

    像这样注册时,在 my test fiddle :

    $("#btn").click("data3", onClick);
    

    但我的IDE抱怨道:

    类型为'(event:event)的错误ts2345(ts)参数 =>any'不能分配给'eventhandler eventhandlerbase>'类型的参数。type'(event:event)=>any'不能分配给类型“eventhandlerbase>”。 参数“event”和“t”的类型不兼容。 类型“event”不能分配给类型“event”。 类型“data3”不能分配给类型“null”。

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

    JQuery.EventHandler<TElement>
    

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

    JQuery.EventHandler<TElement, TData>
    

    哪里 TData 是EventData的类型(在我的示例中为字符串)。但是,如何使用有效且类型安全的typescript语法声明这样的事件处理程序?

    1 回复  |  直到 6 年前
        1
  •  0
  •   Jack Miller    6 年前

    只需将事件目标和事件数据的类型作为泛型属性添加到事件:

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

    对于 fiddle 这没什么区别,但它会让ide和你自己快乐!