2016-07-20 70 views
1

我使用的是用於JQuery的IFrame Transport Plugin。它在JQueryAjaxSettings接口上引入了新的屬性iframe。不幸的是,插件沒有定義文件,這意味着它會在智能感知和編譯項目時拋出錯誤,因爲我必須在代碼中使用iframe屬性。爲沒有定義文件的JQuery插件擴展JQueryStatic

所以我創建了一個單獨的d.ts文件2個新的接口來擴展JQuery的定義文件:

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

interface IJQueryIframeTransportAjaxSettings extends JQueryAjaxSettings { 
    iframe: boolean; 
} 

但這編譯時引發以下錯誤:

TS2430:體形:接口「JQueryStaticIframeTransport '錯誤地擴展了接口'JQueryStatic'。

我看到打字稿可以通過我的界面引入的新功能ajax混淆。但它有不同的簽名。我還能如何擴展它?

回答

2

接口可以擴展這樣的:

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

interface IJQueryIframeTransportAjaxSettings extends JQueryAjaxSettings { 
    iframe: boolean; 
} 


這只是增加新的函數聲明,不要求extends結構。在此基礎上,你可以只用一個聲明來做到這一點,

interface JQueryAjaxSettings { 
    iframe: boolean; 
} 
+0

您的第一個版本工作。第二個沒有。但我很高興:) – Sandro

+0

沒問題,順便說一句,我也嘗試過第二個版本,它爲我工作 – Abhishek