无论参数如何,tsc --module 始终生成相同的输出
-
12-12-2019 - |
题
我对 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
$
解决方案
这确实令人困惑,但 languageService.ts 中的代码并不在 AMD/RequireJS 的“模块”定义意义上的“模块”中。
该规范指的是内部的事物 module
块作为“内部模块”。这就是您在 languageService.ts 中看到的内容。您可以将它们视为公开顶级名称的容器或单例(查看简单内部模块的代码生成可以清楚地说明这一点)。您可以像使用常规顶级对象一样使用它们,而根本不需要任何模块加载器。
生产 外部的 模块(按规范命名) require
是通过把 export
.ts 文件中顶级声明的指令(请参阅规范第 9.2.1 节)。有一些样本(例如imageboard)可供下载,如果您有兴趣,可以执行此操作。
其他提示
您必须将模块定义为 export module
, , 不是你的 module
然后编译它 --m amd
或者 --module amd
.
我花了几个小时才意识到:)
不隶属于 StackOverflow