Ich verwende in meiner Anwendung nur eine Zeile von jQuery:
$("div.printArea").printArea();
Dies gibt mir jedoch einen Typoskript-Fehler:
Die Eigenschaft 'printArea' ist für den Typ JQuery? Nicht vorhanden.
Kann mir jemand sagen, wie ich verhindern kann, dass dieser Fehler auftritt?
jquery
typescript
Alan2
quelle
quelle
Error:(44, 23) TS2339: Property 'printArea' does not exist on type 'ElementFinder'.
interface JQuery
Weg in einem externen Modul versuchen und einen Funktionsparameter als JQuery-Typ definieren und versuchen, ihn aus einer anderen Datei aufzurufen, beschwert sich TypeScript, dass es zwei Typen mit dem Namen JQuery gibt, die nicht miteinander zusammenhängen.Ich denke, dies ist die am besten lesbare Lösung:
($("div.printArea") as any).printArea();
quelle
Sie können es besetzen
(<any>$('.selector') ).function();
Beispiel: Datumsauswahl wird mit jquery initialisiert
(<any>$('.datepicker') ).datepicker();
quelle
Für Ihr Beispiel würden Sie Folgendes hinzufügen:
interface JQuery{ printArea():void; }
Edit: oops, basarat ist unten korrekt. Ich bin nicht sicher, warum ich dachte, es würde kompiliert, aber ich habe diese Antwort aktualisiert.
quelle
$.inviewport(el)
Ops Fall$('selector').printArea
$('selector').printArea
kompiliert? Das glaube ich nicht.$.printArea
wird aber kompilieren. Sie waren sehr höflich, also keine Beleidigung genommen oder beabsichtigt :)Da printArea ein jQuery-Plugin ist, ist es nicht in jquery.d.ts enthalten.
Sie müssen eine Definitionsdatei jquery.printArea.ts erstellen.
Wenn Sie eine vollständige Definitionsdatei für das Plugin erstellen, möchten Sie diese möglicherweise an DefinitelyTyped senden .
quelle
Sie können auch die Ignoriersyntax verwenden, anstatt die Notation (wie besser 'wie jede andere') zu verwenden:
// @ts-ignore $("div.printArea").printArea();
quelle
Sie können es auch so schreiben:
let elem: any; elem = $("div.printArea"); elem.printArea();
quelle