首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将JQuery导入到Typescript文件?

如何将JQuery导入到Typescript文件?
EN

Stack Overflow用户
提问于 2017-05-04 20:46:31
回答 4查看 64.2K关注 0票数 32

更新

不需要导入。相反,我需要在文件的顶部添加一个引用。所以我的WebAPI.js的第一行应该是/// <reference path ="../typings/jquery/jquery.d.ts"/>而不是import { $ } from '../jquery-3.1.1';

我正在尝试导入jQuery以在Typescript文件中使用,但我在尝试任何操作时都收到了各种错误。我遵循了herehere的解决方案,但没有任何运气。

tsconfig.json

代码语言:javascript
复制
{
    "compilerOptions": {
        "removeComments": true,
        "preserveConstEnums": true,
    "out": "Scripts/CCSEQ.Library.js",
    "module": "amd",
        "sourceMap": true,
    "target": "es5",
    "allowJs": true
}

WebAPI.js

代码语言:javascript
复制
import { $ } from '../jquery-3.1.1';

export class ExpenseTransaction extends APIBase {

    constructor() {
        super();
    }

    Get(): void {
        let expenses: Array<Model.ExpenseTransaction>;
        let self = this;
        $.ajax({
            url: this.Connection,
            type: "GET",
            contentType: "application/json",
            dataType: "json",
            success: function (data: any): void {
                expenses = self.ConvertToEntity(data.value);
            },
            error: function (data: any): void { console.log(data.status); }
        });
    };
}

我也尝试过import * as $ from '../jquery.3.1.1'

错误

  • Module jquery-3.1.1 has no exported member $
  • Property ajax does not exist on type (selector: any, context: any) => any
EN

回答 4

Stack Overflow用户

发布于 2019-02-08 22:57:31

Tim使用reference编译器指令的解决方案是有效的,但是现在有了一种更简单的方法。

在tsconfig.json中,如果设置了typeRoots,则根本不需要在.ts文件中执行任何操作。TypeScript会为您完成这项工作。

它是如何工作的?

在我的解决方案中,我通过npm引入所有的@类型,因此这些类型被放在./node_modules/@type中。我还在./@types上手工创建了一些类型。

在我的tsconfig.json中,我添加了:

代码语言:javascript
复制
 "compilerOptions": {     
   // lots of other config here
   "typeRoots": [
     "./node_modules/@types",
     "./@types"
   ]
  }

现在我的所有类型都被编译器自动发现和使用了,所以没有必要为引用标签而烦恼!

结束语...

我应该注意到,如果您这样做并尝试显式导入jquery,它将失败,并且您将感到困惑。我当然是。

票数 2
EN

Stack Overflow用户

发布于 2022-02-08 14:42:06

es5

导入非常简单,如下所示:

代码语言:javascript
复制
import * as $ from 'jquery';

但前提是我们必须安装相关的.d.ts文件:

代码语言:javascript
复制
npm install @types/jquery --save-dev

es6

与上面相同,但如果您希望能够使用"$“作为函数,以侦听文档就绪事件(如"$(function () { ... })"),则继续阅读。

首先,在tsconfig.json文件中,执行如下操作:

代码语言:javascript
复制
{
    "compilerOptions": {
        "esModuleInterop": true
    }
}

然后导入时不带"* as“部分,如:

代码语言:javascript
复制
import $ from 'jquery';

另请参阅stackoverflow.com/Understanding-esModuleInterop

票数 1
EN

Stack Overflow用户

发布于 2018-09-20 20:00:05

尝试用declare let $:any替换您的导入;

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43783307

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档