使用 jQuery 和 Typescript 2
Posted
技术标签:
【中文标题】使用 jQuery 和 Typescript 2【英文标题】:Using jQuery with Typescript 2 【发布时间】:2017-06-09 03:39:33 【问题描述】:我是 Typscript 2 的新手。我想做的是在 typescript 中使用 jQuery。在this 问题中,我读到您需要两件事:
npm install --save-dev @types/jquery
这将安装包“@types/jquery 2.0.39”。
"devDependencies":
"@types/jquery": "^2.0.39",
"typescript": "^2.0.2",
"typings": "^1.0.4"
然后,我在 Typescript 文件中输入:
import $ from "jquery";
但我收到了打字稿错误“找不到模块“jquery”。我做错了什么?
同样的错误
import $ = require("jquery");
完整的打字稿文件:
import Component from '@angular/core';
import $ from "jquery";
@Component(
selector: 'my-app',
template: `<div id="test"></div>`,
)
export class AppComponent
constructor()
$('#test').html('This is a test');
【问题讨论】:
你已经完成了npm install jquery --save
吗?
是的,我有。现在我在 index.d.ts 文件中有错误,例如: Line: attr(attributeName: string, value: string|number|null): JQuery;错误 1:参数初始化器只允许在函数或构造函数实现中使用。错误 2:预期类型。
【参考方案1】:
你只安装 jquery 的类型。你也需要 jQuery 本身:
npm install jquery --save
此外,由于您使用 typescript@2,因此您不再需要 typings
包。这现在将通过 npm 和 @types
包处理,在 $types/your-package
可用,在您的情况下为 @types/jquery
:
npm install @types/jquery --save
【讨论】:
【参考方案2】:我安装了 Visual Studio 更新(工具 -> 扩展和更新)“Typescript 2.0.6 for Visual Studio 2015”。
另外,我安装了以下 NuGet 包:
Microsoft.TypeScript.Compiler Microsoft.Typescript.MSBuild然后我通过 npm 安装了 jQuery 和 jQuery 类型:
npm install jquery @types/jquery --save
最后,在tsconfig.json:
:
"compilerOptions":
... other compiler options ...
"typeRoots": [ "node_modules/@types/" ],
"types": ["jquery" ]
,
现在我可以构建项目,$
在 TypeScript 中被识别为 jQuery。
【讨论】:
【参考方案3】:我要做的是首先在您的项目目录中为jQuery
安装基本的npm
。
npm install jquery
然后通过以下方式使用它:
import $ = require('jquery');
总是有效。
【讨论】:
这是否考虑了打字稿及其打字? 在 Typescript 项目中工作,最初忽略打字。如果你想要打字,你可以通过提供的 repo 安装。 我这样做了,但是模块仍然不可用(找不到模块 jquery) 这对我来说是关键。我试图做import $ from "jquery";
但import $ = require('jquery');
工作。
补充以上内容,我在 tsconfig.js 中使用了 "module": "commonjs"。如果使用 "module": "es6" 那么你想使用 import $ from "jquery";
【参考方案4】:
现在我在 index.d.ts 文件中有错误,例如: 行: attr(attributeName: string, value: string|number|null): JQuery; 错误1:参数初始化器只允许在函数中或 构造函数实现。错误 2:预期类型
不是对您最初问题的回答,而是对后续问题的回答,因为我无法回答您的评论: 我遇到了同样的错误,作为一种解决方法,我从 jQuery 的 index.d.ts 中删除了有问题的行,并且能够在打字稿中使用 jQuery。我还不知道这是否有任何不需要的副作用,所以使用它需要您自担风险。
【讨论】:
感谢您的意见,我会试一试,因为我用完了选项以上是关于使用 jQuery 和 Typescript 2的主要内容,如果未能解决你的问题,请参考以下文章
使用 webpack、gulp 和 typescript 加载 jQuery 插件
如何防止 jquery 使用 webpack 和 typescript 导入两次?
如何使用 jQuery、RequireJS 和 KnockoutJS 创建基本的 TypeScript 项目