TSC --Moduleは常に引数に関係なく同じ出力を生成します。
-
12-12-2019 - |
質問
JavaScript、NodeJS、そして - 低い方 - TypeScriptにはかなり新しい。EditorのIntelliSenseなどを提供するためにsrc/services
(Windows)のコンパイラサービスを試してみたい。
私が知ることができる限りでは、nodejsサーバーのTypeScriptサービスコードをrequire
にすることができる必要があり、エディタからそれと通信する必要があります。NodeJS固有のTypeScriptサービスコードが見つかりませんでしたので、RequireJSを介してNodeJSを使用できるようにするために、サービスコードを--module amd
でコンパイルする必要があると思います。
上記の場合、My --module amd
を使用してサービスコードをコンパイルしようとした試みは、デフォルトのモジュールの種類を使用すると正確に同じ結果です(下記参照)。
$ tsc.cmd --module amd --out amd.js .\languageService.ts
$ tsc.cmd --out comm.js .\languageService.ts
$ diff.exe .\amd.js .\comm.js
$
. 解決
これは確かに混乱していますが、言語サービス.TSのコードは「モジュール」の定義の意味の「モジュール」にはありません。
仕様とは、module
ブロック内のものを「内部モジュール」として表します。それがあなたが言うとあなたが見ているものです。最上位の名前を露出するコンテナやシングルトンのように考えることができます(単純な内部モジュールのコードGENを見ると、このかなりのビットを説明します)。モジュールローダーなしでは、これらの通常のトップレベルオブジェクトのようなものをすべてまったく消費します。
の生産 extern モジュール(SPECで指定されたように)require
は、export
ディレクティブを.tsファイル内の最上位宣言に入れることによって行われます(SPECセクション9.2.1を参照)。いくつかのサンプル(例えばImageBoard)があり、あなたが興味があるならそれを行うダウンロードのために利用可能ないくつかのサンプルがあります。
他のヒント
export module
ではなくmodule
としてモジュールを定義してから、--m amd
または--module amd
でコンパイルする必要があります。
実現するために数時間かかりました:)