Comment importer JQuery dans un fichier dactylographié?

mise à Jour

aucune importation n'était requise. Au lieu de cela, j'ai dû ajouter une référence au haut du fichier. Donc la première ligne de mon WebAPI.js aurait dû être /// <reference path ="../typings/jquery/jquery.d.ts"/> au lieu de import { $ } from '../jquery-3.1.1';


j'essaie d'importer jQuery pour l'utiliser dans un fichier dactylographié, mais je reçois une variété d'erreurs avec tout ce que j'essaie. J'ai suivi les solutions ici et ici, mais sans aucune chance.

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

j'ai aussi essayé import * as $ from '../jquery.3.1.1'

Erreurs

  • Module jquery-3.1.1 has no exported member $
  • Property ajax does not exist on type (selector: any, context: any) => any
18
demandé sur Community 2017-05-04 15:46:30

4 réponses

Vous devez l'importer en tant que import * as $ from "jquery";, selon tapuscrit documentation et fichier de définition de jquery le module est défini comme une ambiante module:

declare module "jquery" {
    export = $;
}

Selon :

Ambiant déclarations, c'est une promesse que vous faites avec le compilateur. Si ceux-ci n'existent pas à l'exécution et que vous essayez de les utiliser, les choses se casseront sans avertissement.

j'Espère qu'il aide!

21
répondu Marco Maldonado 2017-06-13 18:35:21

Une importation n'est pas nécessaire. Au lieu de cela, ajoutez une référence au fichier de définition dactylographié en haut du fichier. Donc, la première ligne de l' WebAPI.js doit être

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

au lieu de

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

Selon DefinitelyTyped wiki:

un fichier de déclaration dactylographié est une façon de définir les types, les fonctions et les paramètres dans une bibliothèque JavaScript externe. En utilisant un fichier de déclaration dans votre texte le code activera Intellisense et la vérification de type contre la bibliothèque externe que vous utilisez.

jquery.d.ts fait partie du DefinitelyTyped Library trouvé sur GitHub. Certainement tapé peut être inclus dans les projets Visual Studio via le Gestionnaire de paquets NuGet.

12
répondu Tim Hutchison 2017-05-31 02:45:00

faire ceci : après avoir installé jquery avec npm ou utilisé avec cdn

le premier:

npm install @types/jquery --save-dev

et après:

import * $ de 'jquery';

1
répondu zahafyou 2018-06-10 01:13:00

Essayez de remplacer votre importation avec déclarer laissez $ :;

0
répondu Anshu Bansal 2018-09-20 12:00:05