我有一个名为test.ts的简单hello world文件,其内容如下:
export class Hello {
constructor() {
console.log("hello world!");
}
}
当我运行命令tsc test.ts –module amd –out bla.js时,将创建具有正确内容的test.js文件,但还会创建一个空的bla.js文件.
我希望test.ts的内容以及所有依赖项都可以编译为bla.js.是什么导致这种行为?
解决方法:
–out参数告诉tsc
Concatenate and emit output to single file.
…但是您正在定义一个模块.模块不是要放在串联文件中.因此,tsc会生成一个包含所有非模块代码的串联文件(您没有任何代码,因此bla.js为空)和一个包含测试模块的模块文件(test.js).
您可以通过在命令行中添加第二个.ts文件来证明这一点,该文件没有定义模块.您将在bla.js中找到该代码的转译版本,并在test.js中找到您的模块.如果添加另一个定义第二个模块的.ts文件,则将在另一个.js文件中找到其源.ts文件的名称.
例如,说你有
>定义模块的Module1.ts
>定义另一个模块的Module2.ts
> Stuff.ts定义非模块内容
> MoreStuff.ts定义更多非模块内容
…而您这样做:
tsc Module1.ts Module2.ts Stuff.ts MoreStuff.ts --out combined.js --module amd
您最终会得到:
> Module1.js,其中包含为Module1编译的JavaScript.
> Module2.js,其中包含为Module2编译的JavaScript.
> Combine.js,包含来自Stuff.ts和MoreStuff.ts的转译JavaScript