モジュール
クラスとインターフェースは、ソフトウェアの部品をどのように用いるかを表現することと、定義と実装とを分離することとにより、大規模なJavaScriptによるアプリケーション開発を支援します。TypeScriptは、プライベートメンバーを用いることで、設計時に、クラスの実装を隠蔽することを強制することができます。しかし、実行時には、この隠蔽は向こうです。なぜならば、JavaScriptのランタイムでは、オブジェクトのすべてのプロパティがアクセス可能だからです。(将来のバージョンのJavaScriptではプライベートメンバーも実現されるかもしれませんが、現在のEcmascript5の環境ではプライベートメンバーはありません。)
現行のJavaScriptでは、実行時のメンバーの隠蔽を実現するための方法は、モジュール(module)パターンを利用するしかありません。モジュールパターンを利用することで、ソフトウェア部品間を自然に分離することができます。モジュールはまた、名前空間を提供することができるため、開発者は、ソフトウェア部品群がグローバルな名前空間で衝突を起こさないようにするために利用することが出来ます。
TypeScriptでモジュールを書く場合には、次のようなコードになります。
- -
このとき、関数fは、exportされているため、外部から利用することができ、sは、exportされていないため、外部から利用することが出来ません。
- -
このとき、M.sは、次のようにエラーとなります。
エラー:
The property 's' does not exist on value of type 'M'any
TypeScriptのコンパイラーにより出力されるJavaScriptは、次のようになります。
- -
(つづく)
(見出しへ)
0 件のコメント:
コメントを投稿