1

我对 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
$
4

2 回答 2

2

诚然,这令人困惑,但从 AMD/RequireJS 对“模块”的定义而言,languageService.ts 中的代码不在“模块”中。

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

通过将指令放在 .ts 文件中的顶级声明上(参见规范第 9.2.1 节)来生成外部模块(由规范命名)。如果您有兴趣,可以下载一些示例(例如图像板)。requireexport

于 2012-10-02T21:14:05.277 回答
1

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

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

于 2013-09-26T19:36:23.707 回答