2014-01-22 124 views
1

我有一個jQuery插件,以標準方式的工作原理:如何讓TypeScript使用jQuery插件?

$.fn.doSomething = function() { 
//do something to each item in the list 
} 

在常規的JavaScript,然後我就可以調用doSomething就好像它是真正的jQuery的一部分:使用

$(selector).doSomething(); 

打字稿在jquery.d.ts參考工作正常使用jQuery,但不知道我的插件任何東西,所以我得到:

The property 'doSomething' does not exist on value of type 'JQuery'. 

那麼,如何告訴TypeScript我添加的附加功能?

回答

3

您需要插件的打字定義文件。

一些常見的庫都可以在這裏(和通過的NuGet)https://github.com/borisyankov/DefinitelyTyped

你可能想搜索谷歌,看看是否你已經被有人做。如果沒有,你只需要自己做。

例如,如果我希望能夠做$('#idOfElement').autosize();

我會創建一個包含此代碼.d.ts文件:

interface JQuery { 
    autosize(): JQuery; 
} 

或許自動調整大小需要一些選項,其中你可以這樣定義它:

interface JQuery { 
    autosize(): JQuery; 
    autosize(options: autosizeOptions): JQuery; 
} 

interface autosizeOptions { 
    className?: string; 
    append?: string; 
    callback?: any; 
} 
+0

完全工作,謝謝!我沒有意識到TypeScript中的接口是局部的,你可以添加另一個'接口JQuery'和一些新成員,而Typescript將它們組合成一個接口。 –

+3

@JoshuaFrank當我第一次使用typescript的時候,我並沒有意識到它,這是一個容易犯的錯誤。我把它加入到jquery.d.ts文件中,然後很久以後通過nuget更新了我的jquery.d.ts,我的所有更改都消失了=(幸運的是,源代碼控制將我保存在那裏。 – Kyle