tsc out 创建空输出文件

tsc out creating empty outfile

我有一个名为 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 正在生成所有非模块代码的串联文件(你有 none,所以 bla.js 是空的)和一个包含你的 test.js 的模块文件(test.js) =15=]模块。

您可以通过向命令行添加第二个 .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