打字稿错误:TS2304:找不到名字'$'

use*_*212 5 javascript node.js typescript

该声明

 x = $('#msgBox_' + scope.boxId).position().left;
Run Code Online (Sandbox Code Playgroud)

生成一个

错误TS2304:找不到名称'$'

虽然jquery并且@types安装在node_modules文件夹中.

我的tsconfig.json看起来像这样:

{
  "compilerOptions": {
    "module": "commonjs",
    "target": "es5",
    "sourceMap": true,
    "moduleResolution": "node",
    "declaration": true
  },
  "exclude": [
    "node_modules"
  ]
}
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?

Geo*_*ali 9

你试过:

 import $ = require('jquery');
Run Code Online (Sandbox Code Playgroud)

在1号线?这应该工作.虽然您应该深入了解es6模块和ts模块,以掌握如何利用es6模块化系统.还有d.ts文件......

这应该是有用的:https: //www.typescriptlang.org/docs/handbook/modules.html


use*_*212 6

结果我错过了"@ types/jquery"节点模块,其中包含"$"的定义.一旦我将"@ types/jquery":"^ 3.2.5"添加到我的package.json中的"devDependencies"列表并通过"npm install"重新安装,一切正常.


Bra*_*ant 5

如果AngularCLI是注入JQuery的位置,则可以在控制器/组件中声明变量,如下所示:

declare var $: any;
Run Code Online (Sandbox Code Playgroud)