我在我的应用程序中只使用了一行jQuery:
$("div.printArea").printArea();
但是这给了我一个打字稿错误:
属性'printArea'在JQuery类型上不存在?
有人可以告诉我如何阻止此错误出现吗?
答案 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();