tsc out创建空outfile

时间:2015-12-08 11:40:33

标签: javascript typescript tsc

我有一个名为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。是什么导致了这种行为?

1 个答案:

答案 0 :(得分:4)

--out参数告诉tsc

  

连接并将输出发送到单个文件。

...但您正在定义模块。模块并不意味着在连接文件中。因此,tsc生成所有非模块代码的连接文件(您没有,因此bla.js为空)和包含test.js的模块文件(test)模块。

您可以通过在命令行中添加第二个.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
  • combined.js包含来自Stuff.tsMoreStuff.ts
  • 的已转换的JavaScript