TypeScript中有一个我非常喜欢的功能,那就是使用RequireJs的外部模块,以及编译器不包含导入模块的事实,除非代码中实际需要它们。这是一个例子:
import A = require('./A');
import B = require('./B');
var a = new A();
使用tsc --module amd example.ts
编译上述代码时,它将转换为:
define(["require", "exports", './A'], function(require, exports, A) {
var a = new A();
});
正如您所看到的,生成的代码中没有B
的迹象。那是因为实际上没有使用B
。正如我所说的这个功能很棒,但现在我有一个场景,我需要包含一些外部模块,即使它们实际上没有在代码中的任何地方使用过。
有谁知道怎么做?为了防止任何误解,我不是想找到一种完全禁用此功能的方法,仅针对某些特定模块。
答案 0 :(得分:5)
另一种方法:
/// <amd-dependency path="./B" />
import A = require('./A');
无需创建虚构代码
答案 1 :(得分:1)
你可以做一个简单的小提琴,让编译器包含两者:
import A = require('./A');
import B = require('./B');
var a = new A();
var b = B;
变量b
在你的程序中变成了噪音,所以我不会过多地使用这种技术,但是如果B
模块正在进行polyfill或类似的东西,这意味着你永远不会想要要直接实例化它,这会为你加载它。