Я использую в своем приложении только одну строку jQuery:
$("div.printArea").printArea();
Но это дает мне ошибку Typescript:
Свойство printArea не существует для типа JQuery?
Может кто-нибудь сказать мне, как я могу остановить появление этой ошибки?
jquery
typescript
Алан2
источник
источник
Error:(44, 23) TS2339: Property 'printArea' does not exist on type 'ElementFinder'.
interface JQuery
способ во внешнем модуле и определите параметр функции как тип JQuery и попытаетесь вызвать его из другого файла, TypeScript пожалуется, что есть два типа с именем JQuery, которые не связаны между собой.declare global { ... }
объявление интерфейса.Думаю, это наиболее читаемое решение:
($("div.printArea") as any).printArea();
источник
Вы можете транслировать его на
(<any>$('.selector') ).function();
Пример: инициализация выбора даты с использованием jquery
(<any>$('.datepicker') ).datepicker();
источник
Для вашего примера вы бы добавили это:
interface JQuery{ printArea():void; }
Изменить: упс, ниже басарат правильный. Я не уверен, почему я думал, что он компилируется, но я обновил этот ответ.
источник
$.inviewport(el)
Ops case$('selector').printArea
$('selector').printArea
компилируется? Я так не думаю.$.printArea
будет компилироваться. Вы были очень вежливы, так что никаких оскорблений не было сделано или умышленно :)Поскольку printArea - это плагин jQuery, он не включен в jquery.d.ts.
Вам необходимо создать файл определения jquery.printArea.ts.
Если вы создаете полный файл определения для подключаемого модуля, вы можете отправить его в DefinficTyped .
источник
Вы также можете написать это так:
let elem: any; elem = $("div.printArea"); elem.printArea();
источник
Вы также можете использовать синтаксис игнорирования вместо обозначения (или, лучше, «как любой»):
// @ts-ignore $("div.printArea").printArea();
источник