2015-05-07 86 views
0

所以我決定是時候學習打字稿了。我來自.net背景,並且非常精通NodeJS,並且想要合併這兩者。Typescript hinting + webstorm + nodejs + require

我已經擊中了一個試圖用「require」d模塊使用打字稿的樹樁。我認爲一個代碼示例將更好地說明

///<reference path="tsd/q.d.ts" /> 
var q = require('q'); //<--- How do I set the type of this using the reference path above? 
function test() { 
    var deferred = q.defer(); 
    deferred.resolve(); 
    return deferred.promise; 
} 

我知道導入,但似乎需要其他文件在打字稿?或者,我是否完全誤解了打字稿可以做什麼?

+0

它看起來像迄今爲止的解決方案是,我需要使用:import q = require('q');這很好地結合起來。我還需要廣告 - 模塊commonjs參數到我的webstorm文件觀察器,讓它編譯 –

回答

0

您還必須設置--modulecommonjs及用途:

import q = require('q') 

您還需要q(和nodejs)的DefinitelyTyped定義文件包含在構建。以您所做的方式引用它是可能的,但如果您使用WebStorm,Visual Studio或Atom等內置集成工具,則項目中的所有文件都將自動包含,並且引用變爲非必需。

打字稿1.5

從1.5+你將有一個tsconfig文件生成順序和夾雜物的目的,如在https://github.com/Microsoft/TypeScript/wiki/tsconfig.json顯示。根據需要設置包含類型的項目文件,而且無需手動參考處的文件

+0

tsconfig的目的不是'.d.ts'引用,如果你在'files'列表中指定它們,那麼這些是唯一的文件將被編譯,我建議不要使用它來處理外部引用。這就是說,如果你使用像tsd這樣的工具,它會處理你所有的參考資料,而你只需要1個參考資料給外部模塊。 https://github.com/DefinitelyTyped/tsd – Brocco

+0

列出的文件與其他文件一起上下文編譯。它的工作原理,你不會需要愚蠢的引用。那基本上是一個項目。 –

+0

沒錯,但任何時候你添加任何文件到'project',那麼你將需要更新tsconfig.json我只是希望它根據目錄結構自動拾取我的文件,這減少了在提交/檢入代碼時的衝突而且當我添加一個與節點約定更加和諧的文件時,我還記得一個小步驟 – Brocco