当我尝试附加单击事件处理程序时,我在typescript文件上收到以下错误,如下所示,
“string”类型的参数不能分配给类型为“{[key:string]:any;}的参数
我在我的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;
我错过了什么?任何提示/建议将不胜感激。
jquery.TypeScript.DefinitelyTyped 3.0。
请停止将nuget用于TypeScript类型定义。
只需下载并在您的项目中包含此文件:https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/jquery/jquery.d.ts
根据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
https://stackoverflow.com/questions/46862920已经有了答案:
$("#some-element").on("click", function(event:JQuery.Event) {
// code
}