2012-10-03 32 views
8

在AMD(如在requirejs實現),可以定義的模塊被包括在如依賴關係,例如:打字稿編譯AMD模塊,需要定義

define(['require','exports'], function(require, exports) { 
    var externalDep = require('path/to/depModule'); 

    // Use the module somewhere. 
}); 

我曾嘗試--module AMD和它正確的輸出AMD模塊可由requirejs使用。

是否可以在TypeScript源文件的源代碼中定義依賴關係,並轉換爲上面的示例?

回答

13

您需要「導出」您的模塊;

export module depModule { 
    export class A { 
    } 
} 

這樣會transalate成JavaScript代碼看起來:

define(["require", "exports"], function(require, exports) { 
    (function (depModule) { 
     var A = (function() { 
      function A() { } 
      return A; 
     })(); 
     depModule.A = A; 
    })(exports.depModule || (exports.depModule = {})); 
}) 

,然後通過使用 「導入」 消耗他們:

module otherModule { 
    import depModule = module('depModule'); 
    var a = new depModule.depModule.A(); 
} 

你需要指定的類型使用--module AMD將模塊代碼生成到編譯器。

+0

不錯的答案,你能解釋一下如何用這個編譯參數設置Visual Studio嗎? – Eric

+7

@Eric - 我建議你安裝Mads Kristensen的'Web Essentials 2012'擴展。在擴展的選項頁面中,您可以指定使用AMD選項編譯TypeScript文件。您可以在此處下載/查找:http://visualstudiogallery.msdn.microsoft.com/07d54d12-7133-4e15-becb-6f451ea3bea6 –

+0

應該注意的是,從3.0版開始,所有TypeScript支持已從Web Essentials中刪除,請參閱[更改日誌](http://vswebessentials.com/changelog)。這個功能最終應該在Visual Studio中可用。 – Chris