tsc - 模块总是生成相同的输出,无论参数如何

时间:2012-10-02 20:40:25

标签: typescript compiler-services

我是Javascript,NodeJS的新手,而且 - 显然是TypeScript。我想在src/services(Windows)中试验编译器服务,为编辑器提供智能感知等。

据我所知,我需要能够require NodeJS服务器中的TypeScript服务代码,并与编辑器中的代码进行通信。我找不到任何特定于NodeJS的TypeScript服务代码,因此我认为我必须使用--module amd编译服务代码,以便通过RequireJS将其提供给NodeJS。

如果上述情况正确,我尝试使用--module amd编译服务代码的结果与使用默认模块种类完全相同(见下文)。

$ tsc.cmd --module amd --out amd.js .\languageService.ts
$ tsc.cmd --out comm.js .\languageService.ts
$ diff.exe .\amd.js .\comm.js
$

2 个答案:

答案 0 :(得分:2)

这无疑令人困惑,但是在AMD / RequireJS定义的“模块”意义上,languageService.ts中的代码并不属于“模块”。

规范将module块中的内容称为“内部模块”。这就是你在languageService.ts中看到的。您可以将它们看作更像是暴露顶级名称的容器或单例(查看简单内部模块的代码gen可以明确地说明这一点)。您可以像使用常规顶级对象一样使用它们,而不需要任何模块加载器。

require生成外部模块(由规范命名)是通过将export指令放在.ts文件中的顶级声明上完成的(请参阅规范第9.2.1节)。如果您有兴趣,可以下载一些样本(例如图像板)来执行此操作。

答案 1 :(得分:1)

您必须将模块定义为export module,而不是module,然后使用--m amd--module amd进行编译。

花了我几个小时才意识到:)