在我們的項目中,我們使用RequireJS作爲模塊加載器。我們的一些模塊將影響全局庫,因此將它們是否在引用的模塊中可以直接使用TypeScript:編譯刪除未引用的導入
例:
define(['definitely/goingto/usethis/','just/referencingthis/forpackaging'], function(useThis) {
useThis.likeIPromised();
// the following call can only be made when the second required file is available
someGlobalAvailableVariable.someMethod();
});
在JavaScript寫我的模塊時,此按預期工作。但是,我們正在逐步將我們的項目轉換爲TypeScript。鑑於上面的例子中,這導致:
import useThis = module("definitely/goingto/usethis/");
import whatever = module("just/referencingthis/forpackaging");
useThis.likeIPromised();
// I've written a definition file so the following statement will evaluate
someGlobalAvailableVariable.someMethod();
和編譯這給JavaScript時,編譯器希望是有幫助的,並刪除任何未使用的導入。因此,這會破壞我的代碼,導致第二個導入的模塊不可用。
我目前的解決辦法是包括一個冗餘的任務,但這種相貌醜陋:
import whatever = module("just/referencingthis/forpackaging");
var a = whatever; // a is never ever used further down this module
有誰知道,如果有可能配置打字稿編譯器編譯期間不優化模塊?
/// <amd-dependency path="just/referencingthis/forpackaging" />
我假設你不能將導入移動到適當的模塊? – Fenton 2013-03-07 13:29:21
他們在適當的模塊。我的項目主要由小部件組成。每個小部件都打包在自己的模塊中。我正在使用Handlebars進行模板設計,並希望將結果視圖與我的小部件定義文件一起打包。引用這樣的視圖時,它會在全局變量'Handlebars'上公開一個同名的方法。因此,我不需要參考模塊,因爲它會爲我定義方法。 – thomaux 2013-03-07 13:54:12