2012-10-05 14 views

答えて

55

活字体は、モジュール密接に次の例は、スペックから取られているのECMAScript 6でどうなるかに関係を定義することができます。あなたはモジュール名にドットを使用する場合は、次のように、typescriptですが、ネストされたモジュールにこれをコンパイルします:

module A.B.C { 
    export var x = 1; 
} 

をこれは何も重要ですが、あなたが正確な同じモジュール名を再利用する場合ということです

module A { 
    module B { 
     module C { 
      export var x = 1; 
     } 
    } 
} 

に等しく、 1つのタイプコピープログラムでは、コードは同じモジュールに属します。したがって、ネストされたモジュールを使用して階層的な名前空間を実装できます。ここで

+0

これらのモジュールは現在ネームスペースと呼ばれています。https://github.com/Microsoft/TypeScript/issues/2159 – Alex

+0

'namespace'や' module'ソースコードとの混合はお勧めしません。 – fletchsod

7

'namespace'キーワードはありませんが、内部モジュール( 'module'キーワードを使用)と外部モジュール( 'export'キーワードを使用)は、コードを論理階層に分割するのと同様の方法を提供します。あなたが見ることができるように、モジュールは名前を持ち、入れ子にすることができ

module outer { 
    var local = 1; 
    export var a = local; 
    export module inner { 
     export var x = 10; 
    } 
} 

+5

typescript 1.5このようなキーワードがあります –

+0

'namespace'や' module'ソースコードとの混合はお勧めしません。 – fletchsod

9

活字体の名前空間の例である:

///<reference path='AnotherNamespace/ClassOne.ts'/> 
///<reference path='AnotherNamespace/ClassTwo.ts'/> 

module MyNamespace 
{ 
    import ClassOne = AnotherNamespace.ClassOne; 
    import ClassTwo = AnotherNamespace.ClassTwo; 

    export class Main 
    { 
     private _classOne:ClassOne; 
     private _classTwo:ClassTwo; 

     constructor() 
     { 
      this._classOne = new ClassOne(); 
      this._classTwo = new ClassTwo(); 
     } 
    } 
} 

あなたがよりここにチェックアウトすることができます:http://www.codebelt.com/typescript/javascript-namespacing-with-typescript-internal-modules/

3

はFalseを...

module A.B.C { 
    export var x = 1; 
} 

module A { 
    export module B { 
     export module C { 
      export var x = 1; 
     } 
    } 
} 
に等しく、

あなたは、モジュールAの外に書くことができますので:

var y = A.B.C.x; 

しかし:バージョン1.5のよう

module A { 
    module B { 
     module C { 
      export var x = 1; 
     } 
     var y = C.x; // OK 
    } 
    //var y = B.C.x; // Invalid 
} 
//var y = A.B.C.x; // Invalid 
28

、活字体はnamespaceキーワードをサポートしています。名前空間は内部モジュールと同等です。 What's new in Typescriptから

module Math { 
    export function add(x, y) { ... } 
} 

後::

namespace Math { 
    export function add(x, y) { ... } 
} 

内部モジュールを定義するために、今、あなたはmodulenamespaceの両方を使用することができます。

+1

'module'と' namespace'は同じJavaScriptコードに変換されます。 –

+0

私は 'namespace'も' module'ソースコードと混ぜることも勧めません。 – fletchsod

関連する問題