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

Tim*_*son 24 javascript ajax import jquery typescript

更新

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


我试图导入jQuery以在Typescript文件中使用,但我收到的各种错误与我尝试的一切.我按照这里这里的解决方案,但没有任何运气.

tsconfig.json

{
    "compilerOptions": {
        "removeComments": true,
        "preserveConstEnums": true,
    "out": "Scripts/CCSEQ.Library.js",
    "module": "amd",
        "sourceMap": true,
    "target": "es5",
    "allowJs": true
}
Run Code Online (Sandbox Code Playgroud)

WebAPI.js

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); }
        });
    };
}
Run Code Online (Sandbox Code Playgroud)

我也试过了 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

Mar*_*ado 30

你必须import * as $ from "jquery";根据typescript的文档jquery的定义文件导入它,模块被定义为环境模块:

declare module "jquery" {
    export = $;
}
Run Code Online (Sandbox Code Playgroud)

根据这个:

环境声明是您使用编译器做出的承诺.如果这些在运行时不存在并且您尝试使用它们,则事情将在没有警告的情况下中断.

希望能帮助到你!

  • 最简单的方法就是“import * as jQuery from 'jquery';”,然后在各处使用“jQuery”而不是“$”。 (2认同)

Tim*_*son 18

不需要导入.而是在文件顶部添加对Typescript定义文件的引用.所以第一行WebAPI.js应该是

/// <reference path ="../typings/jquery/jquery.d.ts"/> 
Run Code Online (Sandbox Code Playgroud)

代替

import { $ } from '../jquery-3.1.1';
Run Code Online (Sandbox Code Playgroud)

根据DefinitelyTyped wiki:

TypeScript声明文件是在外部第三方JavaScript库中定义类型,函数和参数的方法.通过在TypeScript代码中使用声明文件,将对正在使用的外部库启用Intellisense和类型检查.

jquery.d.ts是GitHub上的DefinitelyTyped库的一部分.绝对可以通过NuGet包管理器在Visual Studio项目中包含Typed.


zah*_*you 14

这样做:使用npm安装jquery或与cdn一起使用后

第一:

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

之后:

从'jquery'导入*作为$;


Top*_*ter 5

es5

导入非常简单:

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

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

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

es6

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

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

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

然后导入不带“ * as ”部分,例如:

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

另请参阅stackoverflow.com/Understanding-esModuleInterop