TypeScriptのCJSモジュール

グローバルモジュールと内部モジュール〈名前空間〉は述べた。

CJSモジュールも僕は使いたくはないが、実際はまだ使われている。なにしろ NPM がCJSベースだから。が、ESModulesが使えない場合のみCJS使用だろうな。CJSに将来はない。

  1. 生の moduleオブジェクト、exportsオブジェクト、require関数を使うよりはマシ。
  2. TypeScript構文 import 名前 = require(パス); でモジュールロードする。
  3. 名前をimport側で勝手につけるのはいかがなものか。
  4. パスの仕様はよくわからない。特に拡張子がわからん。要調査。
  5. コンパイルオプションは --module commonjs
  6. TypeScriptの外部モジュールは、ESModulesのモジュール・ファイルと概念的にほぼ一致するが、非モジュールファイルもグローバルモジュールと呼ぶ。
  7. グローバルモジュールとは、非モジュール・スクリプトファイルに include ディレクティブ機能を持たせたものだから、JavaScript的にはモジュールではない。TSCがバンドラー機能〈プリプロセッサ機能〉を持っているだけ。
  8. Export Assignments とか動的なモジュールロードとかは使わないが吉。
  9. export/import は、依存関係・可視性をハッキリさせることが目的だから、分かりにくくなるようなトリッキーなことはしないほうがよい。