10章名前空間とモジュール

プログラムを記述するときに、いくつかのレベルでカプセル化を表現できます。最も低いレベルで言うと、関数は振る舞いをカプセル化し、オブジェクトやリストのようなデータ構造はデータをカプセル化します。さらに、関数やデータをクラスとしてグループ化したり、あるいは別々のデータベースやデータストアを使う、名前空間の区切られたユーティリティとして、それらを分離したままにしたりします。1つのファイルに、1つのクラスまたは一連のユーティリティを含めるのが一般的です。さらに進んで、いくつかのクラスやユーティリティをパッケージとしてグループ化し、それをnpmに公開したりするでしょう。

モジュールについて議論するときには、コンパイラー(TSC)がモジュールをどのように解決するか、バンドラー(Webpack、Rollupなど)がモジュールをどのように解決するか、およびモジュールが実行時にアプリケーションにどのように読み込まれるか(<script />タグ、SystemJSなど)を区別して考えることが重要です。JavaScriptの世界では、これらのそれぞれの作業を行う独立したプログラムが存在するのが普通ですが、この結果モジュール解決の挙動が理解しづらくなる場合があります。CommonJSおよびES2015のモジュール標準は、この3つのプログラムの相互運用を容易にし、Webpackのような強力なバンドラーは、内部で行われるこの3種類のモジュール解決を抽象化する手助けをします。

この章では、この3種類のプログラムのうちの最初のもの、すなわちTypeScriptがモジュールをどのように解決し、コンパイルするかに焦点を当てます。バンドラーやランタイムローダーがモジュールをどのように扱うかの議論は「 ...

Get プログラミングTypeScript ―スケールするJavaScriptアプリケーション開発 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.