10章名前空間とモジュール
プログラムを記述するときに、いくつかのレベルでカプセル化を表現できます。最も低いレベルで言うと、関数は振る舞いをカプセル化し、オブジェクトやリストのようなデータ構造はデータをカプセル化します。さらに、関数やデータをクラスとしてグループ化したり、あるいは別々のデータベースやデータストアを使う、名前空間の区切られたユーティリティとして、それらを分離したままにしたりします。1つのファイルに、1つのクラスまたは一連のユーティリティを含めるのが一般的です。さらに進んで、いくつかのクラスやユーティリティをパッケージとしてグループ化し、それをnpmに公開したりするでしょう。
モジュールについて議論するときには、コンパイラー(TSC)がモジュールをどのように解決するか、バンドラー(Webpack、Rollupなど)がモジュールをどのように解決するか、およびモジュールが実行時にアプリケーションにどのように読み込まれるか(<script />タグ、SystemJSなど)を区別して考えることが重要です。JavaScriptの世界では、これらのそれぞれの作業を行う独立したプログラムが存在するのが普通ですが、この結果モジュール解決の挙動が理解しづらくなる場合があります。CommonJSおよびES2015のモジュール標準は、この3つのプログラムの相互運用を容易にし、Webpackのような強力なバンドラーは、内部で行われるこの3種類のモジュール解決を抽象化する手助けをします。
この章では、この3種類のプログラムのうちの最初のもの、すなわちTypeScriptがモジュールをどのように解決し、コンパイルするかに焦点を当てます。バンドラーやランタイムローダーがモジュールをどのように扱うかの議論は「 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access