错误:类型“JQuery<HTMLElement>”上不存在属性“draggable”

Ath*_*ira 3 jquery types jquery-ui typescript angular

通过将 Angular 2 和 Typescript 与 JQuery 和 JQueryUI 一起使用,我收到以下错误:

Property 'draggable' does not exist on type 'JQuery<HTMLElement>'
Run Code Online (Sandbox Code Playgroud)

我知道这.draggable()是一个依赖于 JQueryUI 的函数,我已经使用以下命令在我的 node_modules 中安装了 JQuery 和 JQueryUI:

npm install --save jquery
npm install --save @types/jquery
npm install --save @types/jqueryui
Run Code Online (Sandbox Code Playgroud)

我的 Webstorm IDE 可以通过在函数上按 Ctrl+单击来突出显示并引导我到正确的位置,但控制台会显示我上面提到的错误。

我正在导入模块,import * as $ from 'jquery';我的代码是$('#element').draggable({containment: '#containment-wrapper});

谁能帮我找出错误在哪里?

更新

感谢@LLai 为我提供了解决问题的好方向。基本上,我必须在我的项目中安装 jqueryui 核心:

npm install --save-dev jqueryui
Run Code Online (Sandbox Code Playgroud)

然后,我不得不进口jqueryuijquery是这样的:

import * as $ from 'jquery';
import 'jqueryui'
Run Code Online (Sandbox Code Playgroud)

好吧,这给了我很多错误,但看起来它是某些版本的问题@types/jquery,所以我不得不在 Github 上关注这个问题,建议安装特定版本的 @types/jquery npm install @types/jquery@2.0.47 --save-dev

完成这些步骤后,一切正常!希望它会帮助别人。

LLa*_*Lai 5

导入jqueryui后还必须导入jquery

import * as $ from 'jquery';
import 'jqueryui';
Run Code Online (Sandbox Code Playgroud)

draggable() 函数现在应该可用。