Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 类型为'的参数;字符串';不可分配给类型为';{[key:string]:任意;}_Javascript_Jquery_Typescript - Fatal编程技术网

Javascript 类型为'的参数;字符串';不可分配给类型为';{[key:string]:任意;}

Javascript 类型为'的参数;字符串';不可分配给类型为';{[key:string]:任意;},javascript,jquery,typescript,Javascript,Jquery,Typescript,当我尝试附加click事件处理程序时,typescript文件出现以下错误,如下所示 类型为“string”的参数不能分配给类型为“string”的参数{ [键:字符串]:任意;} 我在ASP.NET Web应用程序中配置了jQuery 2.1.4和jQuery.TypeScript.DefiniteTypely3.0.4 编辑: 我的typescript文件能够拾取定义文件,如下所示 在我的JQuery.d.ts中,我看到了以下重载 on(events: string, handler:

当我尝试附加click事件处理程序时,typescript文件出现以下错误,如下所示

类型为“string”的参数不能分配给类型为“string”的参数{ [键:字符串]:任意;}

我在ASP.NET Web应用程序中配置了jQuery 2.1.4和jQuery.TypeScript.DefiniteTypely3.0.4

编辑:

我的typescript文件能够拾取定义文件,如下所示

在我的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

请停止对TypeScript类型定义使用nuget

最佳解决方案: 只需下载此文件并将其包含在项目中:

更多
  • 检查您是否使用最新的TypeScript
根据功能上的
可使用以下类型:

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)
将应用
上第3或第4次键入的
,这要求第一个元素的类型为
{[key:string]:any;}
。您需要做的是提供一个需要应用单击功能的选择器。以下是您的选择:

$(this.elementId).click(changeEventHandler)
OR
$(document).on("click", this.elementId, changeEventHandler)

您缺少的是,在使用
on
函数以及事件类型和事件处理程序时,您还需要指定侦听器要连接到的doElement

我遇到了相同的问题。答案和评论中建议的解决方案都没有为我解决问题

事实证明,我的eventHandler的签名没有为第一个参数指定类型
JQueryEventObject
,因此没有应用第一个重载


jquery.d.ts文件中有一个小问题。jquery.d.ts文件不是“on”,而是“one”(参见下图)。改变这一点解决了问题

已经有了答案:

$("#some-element").on("click", function(event:JQuery.Event) {
     // code
}

不久前我遇到过这个问题,如果我没有弄错的话,这是由于jquery.d.ts中
on
定义中的重载顺序造成的。基本上,由于定义包括
[key:string]:在
事件:string
重载之前的任何
重载,因此TypeScript解析器无法找到它。我相信DefinitelyTyped(3.1.1)上定义文件的最新版本已经纠正了这一点。@MikeMcCaughan,谢谢。让我用最新版本试试。我用最新的DefinitelyTyped(3.1.1)试过了,但不适合我。我仍然看到相同的错误。您使用的是什么IDE?可能是IDE没有接受更改。例如,Visual Studio附带了自己版本的jQuery定义。我正在使用Visual Studio 2015 Enterprise出于某种原因,此url在我的工作环境中似乎不起作用。我收到“此站点无法提供安全连接。github.com发送了无效响应。”是否有其他方法下载jquery.d.ts?谢谢$(this.elementId)。单击(changeEventHandler)似乎对我有效。但是,在jquery.d.ts文件中,on函数有6种类型。请查看有问题的编辑部分。是的,但是您调用它的方式,即
$(this.elementId)。on(“click”,changeEventHandler)
函数中只有两个参数
on
函数,这就是为什么typescript将类型
应用于(事件:{[key:string]:any;},data?:any):JQuery到您的函数,因此您的类型不匹配的原因在我的情况下,第一个“on”也有两个参数。。。on(events:string,handler:(eventObject:JQueryEventObject,…args:any[])=>any):JQuery;为什么它没有拾取?我不认为这是正确的-有一个jquery函数
one
以及
on
上的
,这就是这些行的含义。有一个正确的答案: