使用 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的主要内容,如果未能解决你的问题,请参考以下文章

遍历枚举、TypeScript 和 JQuery

使用 webpack、gulp 和 typescript 加载 jQuery 插件

如何防止 jquery 使用 webpack 和 typescript 导入两次?

如何使用 jQuery、RequireJS 和 KnockoutJS 创建基本的 TypeScript 项目

jspm / jQuery / TypeScript - 模块“jquery”没有默认导出

TypeScript 和 jQuery 等库(带有 .d.ts 文件)