javascript - TypeScript:编译删除未引用的导入

标签 javascript requirejs typescript amd tsc

在我们的项目中,我们使用 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 编译器配置为在编译期间不优化模块?

最佳答案

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

/// <amd-dependency path="just/referencingthis/forpackaging" />

关于javascript - TypeScript:编译删除未引用的导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15267705/

相关文章:

javascript - 向 Quill 添加自定义按钮操作

javascript - 在 select 选项的 onchange function() 中传递多个名称

javascript - SharePoint 2010 不接受输入标记中的 "value"属性...还有其他选择吗?

http - 在 Angular 2 中使用服务中的 Json 文件

Typescript:使用嵌套只读属性时,类型防护无法按预期工作

java - 如何使用ExtJs向服务器发送参数?

Jquery、require.js、backbone.js。示例应用程序

requirejs - Karma/Jasmine 测试失败,错误为 : 'Uncaught Error: Module name "simple_test. js“尚未加载上下文 : _. 使用 require([])”

dojo - 在 dojo 1.9.1 中使用 requirejs

javascript - 使用Axios和VueJS通过id获取数据