【问题标题】:tsc --module always generates the same output no matter the argumenttsc --module 无论参数如何,总是生成相同的输出
【发布时间】:2012-09-23 18:12:18
【问题描述】:

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

【问题讨论】:

标签: typescript compiler-services


【解决方案1】:

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

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

【讨论】:

  • 欢迎来到 StackOverflow。顺便说一句,看起来您正在寻找反引号而不是单引号。
【解决方案2】:

这确实令人困惑,但 languageService.ts 中的代码不在 AMD/RequireJS 对“模块”定义的意义上的“模块”中。

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

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-09
  • 1970-01-01
  • 2017-03-28
相关资源
最近更新 更多