37

在我们的项目中,我们使用 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 时,编译器希望提供帮助并删除任何未使用的 imports。因此,这会破坏我的代码,导致第二个导入的模块不可用。

我目前的工作是包含一个冗余分配,但这看起来很难看:

import whatever = module("just/referencingthis/forpackaging");
var a = whatever; // a is never ever used further down this module

有谁知道是否可以将 TypeScript 编译器配置为在编译期间不优化模块?

4

2 回答 2

26

您可以在文件顶部执行此操作(而不是import):

/// <amd-dependency path="just/referencingthis/forpackaging" />
于 2013-03-07T17:05:40.890 回答
9

更好的解决方案(使用 TS 1.8 测试):

import 'just/referencingthis/forpackaging';

amd-dependency 三斜杠指令似乎仅在有其他需要导入时才有效;只有 amd-dependency 指令会导致 TypeScript 编译器在没有模块定义的情况下完全生成 JavaScript。

于 2016-04-27T16:14:57.233 回答