CommonJS方式は、言語仕様ではなくて、JavaScript言語処理系実装が提供する機能に過ぎない(標準化されてるとしても)。この機能の主要な構成素は:
- モジュールコード実行中には require として見える NativeModule.require関数
- モジュールコード実行中には module として見えるモジュールオブジェクト(というデータ構造)
結局、NativeModule.require関数の関数仕様とモジュールオブジェクトのデータ構造仕様がわかれば、モジュールシステムが理解できる。言語仕様ではないから構文は特にない。NativeModule.require関数の呼び出しと、モジュールオブジェクトへのアクセス(読み出し/書き込み)があるだけ。
それに対して、ES2016+方式とTypeScriptモジュールは言語仕様だから、これは言語仕様として理解すべき。ただし、TypeScriptの場合はCommonJS方式にコンパイルされるから、コンパイラの挙動(という実装)も知らないといかんかも知れない。ああああ、めんどくせー。