2012-10-02 70 views
1

我對Javascript,NodeJS和 - 顯然是TypeScript都很陌生。我想試試src/services(Windows)中的編譯器服務來爲編輯器提供智能感知等。無論參數如何,tsc --module始終會生成相同的輸出

據我所知,我需要能夠在一個NodeJS服務器中輸入require TypeScript服務代碼並與來自編輯器的代碼進行通信。我找不到任何NodeJS特定的TypeScript服務代碼,所以我想我必須編譯--module amd的服務代碼,以便通過RequireJS將它提供給NodeJS。

如果以上內容是正確的,我試圖編譯服務代碼--module amd的結果與使用默認模塊種類(見下文)的結果完全相同。

$ tsc.cmd --module amd --out amd.js .\languageService.ts 
$ tsc.cmd --out comm.js .\languageService.ts 
$ diff.exe .\amd.js .\comm.js 
$ 
+0

我創建了內部與外部模塊的視頻教程,以澄清困惑:http://www.youtube.com/watch?v=KDrWLMUY0R0&hd=1 – basarat

+0

如果您目標是對TS的編輯器支持,請查看[typescript-tools](https://github.com/clausreinke/typescript-tools) – claus

回答

2

這是無可否認的混亂,但在languageService.ts的代碼是不是在「模塊」的AMD/RequireJS的定義意義上的「模塊」。

該規範將module塊中的內容稱爲「內部模塊」。這就是你在languageService.ts中看到的。你可以將它們看作更容易暴露頂層名稱的容器或單例(查看簡單內部模塊的代碼gen澄清了這一點)。你可以像普通的頂級對象一樣使用它們,而不需要任何模塊加載器。

生產外部模塊require(由規範命名)是通過將export指令在頂級聲明中的.ts文件中完成(見規範第9.2.1節)。有些樣本(例如圖像板)可供下載,如果您有興趣,可以這樣做。

+0

相關TS問題:https://typescript.codeplex.com/workitem/521 https://typescript.codeplex.com/workitem/534 https://typescript.codeplex.com/workitem/97 – claus

1

您必須將您的模塊定義爲export module,而不是您的module,然後使用--m amd--module amd進行編譯。

我花了幾個小時,以實現:)

+0

歡迎來到StackOverflow。順便說一句,它看起來像你在尋找反引號而不是單引號。 –

相關問題