javascript - Hvordan importere JQuery i en Typescript-fil?


Oppdater

Ingen import var nødvendig. I stedet måtte jeg legge til en referanse øverst i filen. Så den første linjen i WebAPI.js burde ha vært /// <reference path ="../typings/jquery/jquery.d.ts"/> i stedet for import { $ } from '../jquery-3.1.1';

Jeg prøver å importere jQuery for å bruke det i en Typescript-fil, men jeg får en rekke feil uansett hva jeg prøver. Jeg fulgte løsningene her og her, men uten hell.

tsconfig.json

{
    "compilerOptions": {
        "removeComments": true,
        "preserveConstEnums": true,
    "out": "Scripts/CCSEQ.Library.js",
    "module": "amd",
        "sourceMap": true,
    "target": "es5",
    "allowJs": true
}

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); }
        });
    };
}

Jeg har også prøvd import * as $ from '../jquery.3.1.1'

Feil

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

Svar #1

Du må importere det som import * as $ from "jquery";, ifølge TypeScripts dokumentasjon, og jQuerys definisjonsfil er modulen definert som en ambient modul:

declare module "jquery" {
    export = $;
}

I følge dette:

Ambient-deklarasjoner er et løfte du gir til kompilatoren. Hvis disse ikke eksisterer under kjøring og du prøver å bruke dem, vil ting gå galt uten varsel.

Svar #2

En import er ikke nødvendig. Legg i stedet til en referanse til Typescript-definisjonsfilen øverst i filen. Så den første linjen i WebAPI.js bør være

/// <reference path ="../typings/jquery/jquery.d.ts"/> 

i stedet for

import { $ } from '../jquery-3.1.1';

Ifølge DefinitelyTyped-wikien:

En TypeScript-deklarasjonsfil er en måte å definere typene, funksjonene og parameterne i et eksternt tredjeparts JavaScript-bibliotek. Ved å bruke en deklarasjonsfil i TypeScript-koden din vil det gjøre det mulig med Intellisense og typekontroll mot det eksterne biblioteket du bruker.

jquery.d.ts er en del av DefinitelyTyped-biblioteket som finnes på GitHub. DefinitelyTyped kan inkluderes i Visual Studio-prosjekter via NuGet Package Manager.

Svar #3

gjør dette : etter å ha installert jquery med npm eller brukt med cdn

først:

npm install @types/jquery --save-dev

og etter:

import * as $from 'jquery';

Relaterte artikler