当我尝试附加点击事件处理程序时,我在typescript文件上收到以下错误,如下所示,
类型'string'的参数不能分配给'{类型的参数 [键:字符串]:任何;}
我在ASP.NET Web应用程序中配置了jQuery 2.1.4和jquery.TypeScript.DefinitelyTyped 3.0.4。
编辑:
我的打字稿文件能够拾取定义文件,如下所示,
在我的JQuery.d.ts中,我看到以下重载,
on(events: string, handler: (eventObject: JQueryEventObject, ...args: any[]) => any): JQuery;
on(events: string, data : any, handler: (eventObject: JQueryEventObject, ...args: any[]) => any): JQuery;
on(events: string, selector: string, handler: (eventObject: JQueryEventObject, ...eventData: any[]) => any): JQuery;
on(events: string, selector: string, data: any, handler: (eventObject: JQueryEventObject, ...eventData: any[]) => any): JQuery;
on(events: { [key: string]: any; }, selector?: string, data?: any): JQuery;
on(events: { [key: string]: any; }, data?: any): JQuery;
我错过了什么?任何提示/建议将不胜感激。
答案 0 :(得分:4)
我遇到了同样的问题。答案和评论中没有提出的解决方案确实为我解决了这个问题。
原来我的eventHandler的签名不为第一个参数指定了类型JQueryEventObject
,因此没有应用第一个重载。
答案 1 :(得分:1)
jquery.TypeScript.DefinitelyTyped 3.0。
请停止将nuget用于TypeScript类型定义。
只需下载并在您的项目中加入此文件:https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/jquery/jquery.d.ts
答案 2 :(得分:1)
根据jquery.d.ts,on
功能可以使用以下类型:
1. on(events: string, selector: string, handler: (eventObject: JQueryEventObject, ...eventData: any[]) => any): JQuery;
2. on(events: string, selector: string, data: any, handler: (eventObject: JQueryEventObject, ...eventData: any[]) => any): JQuery;
3. on(events: { [key: string]: any; }, selector?: string, data?: any): JQuery;
4. on(events: { [key: string]: any; }, data?: any): JQuery;
现在,您正在以下列方式实现该功能
$(this.elementId).on("click", changeEventHandler)
on
的第3或第4次输入将被应用,这需要第一个元素为{ [key: string]: any; }
类型。您需要做的是提供一个需要应用click函数的选择器。所以这是你的选择:
$(this.elementId).click(changeEventHandler)
OR
$(document).on("click", this.elementId, changeEventHandler)
您缺少的是当使用on
函数以及事件类型和事件处理程序时,您还需要指定要附加侦听器的DOMElement
答案 3 :(得分:1)
https://stackoverflow.com/questions/46862920已有答案:
$("#some-element").on("click", function(event:JQuery.Event) {
// code
}
答案 4 :(得分:0)