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?
Odpowiedzi:
Możesz rzucić to na <any>lub rozszerzyć typowanie w jquery, aby dodać własną metodę.
(<any>$("div.printArea")).printArea();
// Lub dodaj własne niestandardowe metody (zakładając, że zostały dodane przez Ciebie jako część niestandardowej wtyczki)
interface JQuery {
printArea():void;
}
interface JQuerysposobu 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.
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ź.
$.inviewport(el)Ops$('selector').printArea
$('selector').printAreakompiluje? Nie sądzę. $.printAreabę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 .
Error:(44, 23) TS2339: Property 'printArea' does not exist on type 'ElementFinder'.