【发布时间】:2013-02-22 10:41:43
【问题描述】:
在我们的项目中,我们使用 RequireJS 作为我们的模块加载器。我们的一些模块会影响全局库,因此不会直接在引用它们的模块中使用。
例子:
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
有谁知道是否可以将 TypeScript 编译器配置为在编译期间不优化模块?
【问题讨论】:
-
我假设您不能只是将导入移动到适当的模块?
-
它们在相应的模块中。我的项目主要由小部件组成。每个小部件都打包在自己的模块中。我正在使用 Handlebars 进行模板化,并希望将生成的视图与我的小部件定义文件一起打包。当引用这样的视图时,它将在全局变量“Handlebars”上公开一个同名的方法。因此我不需要引用该模块,因为它会为我定义方法。
标签: javascript requirejs typescript amd tsc