W mojej aplikacji używam tylko jednej linii jQuery:
$("div.printArea").printArea();
Ale to daje mi błąd maszynopisu:
Właściwość „printArea” nie istnieje w typie JQuery?
Czy ktoś może mi powiedzieć, jak mogę zatrzymać ten błąd?
jquery
typescript
Alan2
źródło
źródło
Error:(44, 23) TS2339: Property 'printArea' does not exist on type 'ElementFinder'.
interface JQuery
sposobu w zewnętrznym module i zdefiniujesz parametr funkcji jako typ JQuery i spróbujesz wywołać go z innego pliku, TypeScript będzie narzekać, że istnieją dwa typy o nazwie JQuery, które nie są ze sobą powiązane.declare global { ... }
o deklaracji interfejsu.Myślę, że to najbardziej czytelne rozwiązanie:
($("div.printArea") as any).printArea();
źródło
Możesz to przesłać do
(<any>$('.selector') ).function();
Np .: selektor dat inicjuje się przy użyciu jQuery
(<any>$('.datepicker') ).datepicker();
źródło
Na przykład dodałbyś to:
interface JQuery{ printArea():void; }
Edycja: ups, basarat jest poprawny poniżej. Nie jestem pewien, dlaczego myślałem, że się kompiluje, ale zaktualizowałem tę odpowiedź.
źródło
$.inviewport(el)
Ops$('selector').printArea
$('selector').printArea
kompiluje? Nie sądzę.$.printArea
będzie się jednak kompilować. Byłaś bardzo uprzejma, więc bez obrazy lub zamierzonego zachowania :)Ponieważ printArea jest wtyczką jQuery, nie jest zawarta w jquery.d.ts.
Musisz utworzyć plik definicji jquery.printArea.ts.
Jeśli utworzysz kompletny plik definicji dla wtyczki, możesz przesłać go do DefinitelyTyped .
źródło
Możesz też napisać to tak:
let elem: any; elem = $("div.printArea"); elem.printArea();
źródło
Możesz także użyć składni ignorowania zamiast (lub lepiej notacji `` jak każdy ''):
// @ts-ignore $("div.printArea").printArea();
źródło