2016-07-20 10 views
1

Я использую IFrame Transport Plugin для JQuery. Он вводит новое свойство iframe на интерфейсе JQueryAjaxSettings. К сожалению, у плагина нет файла определения, что означает, что он вызывает ошибки в Intellisense и при компиляции проекта, потому что я должен использовать это свойство iframe в своем коде.Расширение JQueryStatic для плагина JQuery, у которого нет файла определения

Так что я создал 2 новых интерфейсов в отдельном d.ts файла для расширения файла определения Jquery в:

interface JQueryIframeTransportStatic extends JQueryStatic { 
    ajax(settings: IJQueryIframeTransportAjaxSettings): JQueryXHR; 
} 

interface IJQueryIframeTransportAjaxSettings extends JQueryAjaxSettings { 
    iframe: boolean; 
} 

Но это выдает следующее сообщение об ошибке при компиляции:

TS2430: Сложение: JQueryStaticIframeTransport интерфейс» 'неправильно расширяет интерфейс' JQueryStatic '.

Я вижу, что TypeScript может быть смущен новой функцией ajax, введенной моим интерфейсом. Но у него другая подпись. Как еще я могу его продлить?

ответ

2

Интерфейс может быть расширен следующим образом:

interface JQueryStatic { 
    ajax(settings: IJQueryIframeTransportAjaxSettings): JQueryXHR; 
} 

interface IJQueryIframeTransportAjaxSettings extends JQueryAjaxSettings { 
    iframe: boolean; 
} 


Это просто добавляет новую функцию декларации, не требующую extends конструкцию. Основываясь на этом, вы можете сделать это только с одним заявлением, а именно:

interface JQueryAjaxSettings { 
    iframe: boolean; 
} 
+0

Ваша первая версия сработала. Второй - нет. Но я счастлив :) – Sandro

+0

Нет проблем, кстати, я тоже попробовал вторую версию, и это сработало для меня – Abhishek

Смежные вопросы