web-dev-qa-db-fra.com

Comment puis-je arrêter la "propriété n'existe pas sur le type JQuery" erreurs de syntaxe lors de l'utilisation de Typescript?

Je n'utilise qu'une seule ligne de jQuery dans mon application:

$("div.printArea").printArea();

Mais cela me donne une erreur TypeScript:

La propriété 'printArea' n'existe pas sur le type JQuery?

Quelqu'un peut-il me dire comment je peux empêcher cette erreur d'apparaître?

64
Alan2

Vous pouvez le lancer sur <any> ou prolongez le jquery en ajoutant votre propre méthode.

 (<any>$("div.printArea")).printArea();

// Ou ajoutez vos propres méthodes personnalisées (en supposant que cela soit ajouté par vous-même dans le cadre d'un plugin personnalisé)

interface JQuery {
    printArea():void;
}
161
PSL

Je pense que c'est la solution la plus lisible:

($("div.printArea") as any).printArea();
28
Eldamir

Vous pouvez le jeter à

(<any>$('.selector') ).function();

Ex: le sélecteur de date s'initialise en utilisant jquery

(<any>$('.datepicker') ).datepicker();
8
vishnu

Pour votre exemple, vous ajouteriez ceci:

interface JQuery{
    printArea():void;
}

Edit: oups, le basarat est correct ci-dessous. Je ne sais pas pourquoi je pensais que c'était en train de compiler mais j'ai mis à jour cette réponse.

3
AlexB

Comme printArea est un plugin jQuery, il n’est pas inclus dans jquery.d.ts.

Vous devez créer un fichier de définition jquery.printArea.ts.

Si vous créez un fichier de définition complet pour le plug-in, vous voudrez peut-être le soumettre à DefinitelyTyped .

2
Albin Sunnanbo

Vous pouvez aussi l'écrire comme ceci:

let elem: any;
elem = $("div.printArea");
elem.printArea();
1
iqqmuT