属性'jqGrid'在'JQuery'类型的值上不存在

时间:2013-12-06 18:21:49

标签: jquery jqgrid typescript

我正在使用带有jqGrid和jQuery的Typescript。

在以下行中:

jQuery(this).jqGrid('editGridRow', rowid, {
    ...

我收到消息:

  

属性'jqGrid'在'JQuery'类型的值上不存在。

有关如何纠正此问题的任何想法?

2 个答案:

答案 0 :(得分:14)

我想您使用 jquery.TypeScript.DefinetlyTyped NuGet包。

在这种情况下,添加文件〜/ Scripts / typings / custom.d.ts ,内容如下:

/// <reference path="jquery/jquery.d.ts"/>
interface JQuery { jqGrid: any; }

<强>更新 以上解决方案是通用的,适用于所有情况。更好的解决方案是......

安装 jqgrid.TypeScript.DefinitelyTyped NuGet包。

答案 1 :(得分:3)

问题是JQuery网格是一个插件。看起来你有一个JQuery库的定义文件,但没有JQuery Grid插件的定义文件。我检查了https://github.com/borisyankov/DefinitelyTyped并且似​​乎没有针对此特定插件的类型定义。你可以做一些事情。

  • 您可以将jQuery分配给“any”类型的变量:

var localJq:any = jQuery(this); localJq.jqGrid('editGridRow',rowid,{...});

这将欺骗编译器并允许您访问var中未在定义文件中定义的属性。

  • 您可以创建一个定义文件,将jqGrid属性添加到jquery。您需要在使用jqGrid的任何打字稿文件中引用此定义文件。 Here是一个简单JQuery插件的定义文件的示例。如您所见,使用其他属性扩展JQuery定义很容易。