別のブログで公開してたものです。
一部をこっちのブログに移行しようと手動で(^^;)移行したものです。

内部モジュールと外部モジュールというのがある。
内部モジュールは、C#のnamespaceやJavaのpackageなんかと同じように名前の衝突をさけたりするもの。外部モジュールは、外部ファイルから参照やロード(動的ロード?)するためのもの。と、勝手に認識してる(^^;)

内部モジュールは次のような感じ。

module hoge {
	//  class bはexportしてないのでモジュール内でしか使えない。
	class b {
		public message(text:string):void {
			alert(text);
		}
	}

	export class a {
		private bbb:b; // モジュール内なので使える
		
		constructor() {
			this.bbb = new b();
		}
		public message(text:string):void {
			alert(text);
		}
		public messageB():void {
			this.bbb.message("messageB");
		}
	}
}

var aaa:hoge.a;
aaa = new hoge.a();
aaa.message("にょ");		// "にょ"って表示される

var bbb:hoge.b;			// class bをexportしていないのでエラーになる。

外部モジュールは、CommonJSやAMDの仕様に合わせたモジュールとしてコンパイルされるものらしい。
これは必要になったときに調べよーwww