Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.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
我怎样才能停下来;属性在类型JQuery上不存在;使用Typescript时出现语法错误?_Jquery_Typescript - Fatal编程技术网

我怎样才能停下来;属性在类型JQuery上不存在;使用Typescript时出现语法错误?

我怎样才能停下来;属性在类型JQuery上不存在;使用Typescript时出现语法错误?,jquery,typescript,Jquery,Typescript,我在应用程序中只使用了一行jQuery: $("div.printArea").printArea(); 但这给了我一个打字错误: 类型JQuery上不存在属性“printArea” 有人能告诉我如何阻止出现此错误吗?您可以将其强制转换为或扩展jquery键入以添加您自己的方法 (<any>$("div.printArea")).printArea(); 因为printArea是一个jQuery插件,所以它不包含在jQuery.d.ts中 您需要创建jquery.printAr

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

$("div.printArea").printArea();
但这给了我一个打字错误:

类型JQuery上不存在属性“printArea”


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

您可以将其强制转换为
或扩展jquery键入以添加您自己的方法

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

因为printArea是一个jQuery插件,所以它不包含在jQuery.d.ts中

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


如果您为您想要提交的插件创建了完整的定义文件。

例如,您需要添加以下内容:

interface JQuery{
    printArea():void;
}

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

我认为这是最具可读性的解决方案:

($("div.printArea") as any).printArea();
你可以把它投给

(<any>$('.selector') ).function();
($('.selector')).function();
例如:使用jquery初始化日期选择器

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

您也可以这样写:

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

您也可以使用ignore语法,而不是使用(或更好的是“as any”)表示法:

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

不。他正在用美元包装一件物品。它不再是静态美元了嗯,你确定吗?我在一个项目中对此进行了测试,结果成功了。您的案例<代码>$。inviewport(el)Ops案例<代码>$(“选择器”)。printArea对不起,我不是故意吹毛求疵,但我的代码对我有用。问题似乎是关于让代码编译,那么如果我的代码编译了,它有什么问题?请注意,我的第二个使用printArea()的示例也可以使用。
$('selector')。printArea是否编译?我不这么认为<代码>$。printArea
将编译。您非常有礼貌,因此没有冒犯我:)给我:
错误:(44,23)TS2339:类型“ElementFinder”上不存在属性“printArea”。
如果您在外部模块中尝试使用
接口JQuery
方式,并将函数参数定义为JQuery类型,然后尝试从另一个文件调用它,TypeScript会抱怨有两个名为JQuery的类型是不相关的。声明接口似乎很有效。而且,它比向任何对我不起作用的地方强制转换要干净得多,但最终我无意中发现,我意识到我需要在接口声明周围使用
declare global{…}
。并且确保tsconfig.json的设置也正确。如果有“类型”设置,则仅识别列出的类型。如果没有,那么它将识别节点_模块/@类型中的所有内容
// @ts-ignore
$("div.printArea").printArea();