使用Typescript时,如何停止“类型JQuery上不存在属性”语法错误?

时间:2014-07-27 18:10:34

标签: jquery typescript

我在我的应用程序中只使用了一行jQuery:

$("div.printArea").printArea();

但是这给了我一个打字稿错误:

  

属性'printArea'在JQuery类型上不存在?

有人可以告诉我如何阻止此错误出现吗?

7 个答案:

答案 0 :(得分:152)

您可以将其强制转换为<any>或扩展jquery类型以添加​​您自己的方法。

 (<any>$("div.printArea")).printArea();

//或者添加自己的自定义方法(假设这是自己添加的自定义插件)

interface JQuery {
    printArea():void;
}

答案 1 :(得分:27)

我认为这是最易读的解决方案:

($("div.printArea") as any).printArea();

答案 2 :(得分:8)

您可以将其投射到

(<any>$('.selector') ).function();

Ex:使用jquery初始化日期选择器

(<any>$('.datepicker') ).datepicker();

答案 3 :(得分:3)

对于您的示例,您需要添加以下内容:

interface JQuery{
    printArea():void;
}

编辑:oops,basarat在下面是正确的。我不确定为什么我认为它正在编译,但我已经更新了这个答案。

答案 4 :(得分:2)

由于printArea是一个jQuery插件,因此它不包含在jquery.d.ts中。

您需要创建一个jquery.printArea.ts定义文件。

如果您为插件创建完整的定义文件,则可能需要将其提交到DefinitelyTyped

答案 5 :(得分:2)

您还可以使用ignore语法来代替(或更好地使用“ as any”)表示法:

// @ts-ignore
$("div.printArea").printArea();

答案 6 :(得分:1)

您也可以这样写:

let elem: any;
elem = $("div.printArea");
elem.printArea();