2012-10-06 53 views
20

我一直在試圖去了解這個新的'TypeScript'的東西,而我對某些東西有點好奇。TypeScript與jQuery沒有定義文件交互?

它可以仍然與現有的JavaScript框架,如jQuery 沒有需要定義文件與所有這些接口?我一直在試圖手動測試這個,但到目前爲止,我還不確定功能的擴展程度。

更新

的「工作」,我指的是簡單的功能,而不是IDE的功能,如自動完成。

回答

33

簡單的答案是是的

TypeScript能夠完全與任何現有的Javascript庫進行交互。如果您希望在IDE中使用工具,使其更易於使用,則只需要定義文件。另外,如果不包含定義文件,TypeScript編譯器可能會因爲使用未在代碼中定義的變量(如$)而感到憤怒。要解決這個問題,你可能需要做一些像

declare var $; 

這麼說,我不知道爲什麼你不會想使用jQuery的定義文件。它肯定會讓寫jQuery更加愉快。

+0

簡短的回答是因爲我對JavaScript的知識還沒有發展到能夠快速編寫我自己的定義文件的程度。隨着我越來越有經驗,我可能會做得更多。 – Ciel

+0

@Ciel如果沒有人寫過定義文件,當然,我可以理解你爲什麼不想自己做。但是jQuery已經存在,你可以[從這裏複製](http://typescript.codeplex.com/SourceControl/changeset/view/fe3bc0bfce1f#samples%2fjquery%2fjquery.d.ts)。 –

+0

還值得注意的是,如果在TypeScript附帶的jQuery定義文件中缺少某些內容,您可能需要自行添加它。您可以複製發貨的jquery.d.ts文件並修改該文件或通過單獨的ext.d.ts文件添加擴展。查看我的答案[將jQuery插件添加到TypeScript](http://stackoverflow.com/questions/12719529/using-jquery-plugin-in-typescript/12722003#12722003)以獲取有關此信息。 –

7

是的,你可以。例如只寫:

declare var $; 

,你基本上可以使用jQuery框架,而不必定義任何東西。當你轉換現有的庫/移植代碼時,這也非常方便。

3

Typescript允許您使用declare variabledeclare function語法(請參見語言規範的第9頁上的第1.1節)在描述的範圍內聲明變量。但是,使用環境聲明只能是一個短期解決方案,因爲您將有效地釋放所有Typescript的靜態類型檢查,因此也是Typescript比Javascript更重要的優勢之一。