2016-11-11 23 views
0

我有一個JQuery插件(mixItUp),我嘗試使用Typescript,它沒有它自己的* .d.ts文件。使用JScript插件使用Typescript

我如何使它與打字稿一起工作?

我做了我自己的mixItUp.d.tds文件,內容如下:

interface JQuery 
{ 
    mixItUp():any; 
} 

在我試圖在,我使用下面的代碼使用mixItUp模塊:

$('#mySelector').mixItUp(); 

它編譯得很好,我得到了intellisense for mixItUp,所以不知怎的,它拿起mixItUp.d.ts文件而沒有引用它。

在html中,我在jquery中加載,然後在這個模塊之前加入了非打字稿(Pure js)mixItUp庫,所以我知道jquery和mixitup在那個時候真的存在。

然而,當網頁加載完畢後,我得到了以下錯誤消息:

$(...).mixItUp is not a function(…) 

大多數我發現導遊的似乎可以用我的理解是引用* .D的老辦法.ts文件。

有人可以請解釋正確的方式來使用JScript插件與打字稿,以及如果可能如何引用非打字稿庫(我假設技術將類似)。

謝謝。

+0

的是JavaScript的mixItUp文件在頁面上? –

+0

@無線電 - 是的。我編輯了我的問題,明確指出這是我所指的「純js」庫。 – Steviebob

+0

不知道這是否有幫助,看看你是否可以在這裏重現你的問題:https://jsfiddle.net/dmqr7szq/ – skav

回答

0

如果發生在運行時,它很可能不是由Typescript引起的,因爲TS只是被編譯爲JS。由於TS本身並不瞭解您的庫,只能通過接口獲取有關它的信息,因此它會按原樣編譯該調用(可以通過查看Developer Console中的輸出或類似方法來證明這一點)。

所以一定要確保mixItUp裝入正確,執行您的代碼之前(但jQuery的)之後,它應該工作正常(因爲你使用jQuery的版本是由插件支持)

+0

如果我放置$('#mySelector')。mixItUp();直接在頁面上,它加載正常,但是當我註釋掉並取消註釋我的.ts文件中的一個時,我得到錯誤。 也許如果有人能解釋如何通常引入/引用非打字稿庫,那可能導致答案? – Steviebob

+0

有很多因素可能影響這裏的結果。如果您可以提供更多關於如何構建TS的信息,然後將JS文件包含在您的頁面上,那將會很好。頁面的內容(或者至少包含JS文件的部分)也有幫助。 – Riiverside

+0

將JS庫添加到TS文件時,通常沒有什麼神奇的做法。其實你甚至不需要做任何特別的事情。 TS編譯爲JS並與其完全兼容。您可以將自制類型添加到您的項目中(如您所做的那樣)以獲得代碼完成的好處,並編譯時檢查代碼是否正確使用該庫。除此之外,它完全是可選的。 – Riiverside