1

ソースを複数のモジュール(異なるファイル)にパッケージ化するプロジェクトに取り組んでいます。これを行うのは、全体の重量を減らすために、特定のページに特定の部分のみを含めることができるようにするためです。

私が抱えている問題は、外部モジュールのエイリアスを作成できる構文を理解できないことです。また、モジュール全体を毎回書き出す必要はありません(通常、組織のABCDのようなものであるため)。 )。

コンパイルすると、すべてのファイルを取得するスクリプトがあるので、最初のパラメーターとして外部定義ファイルがあります。

モジュール全体を書き出すと(A.B.C.D.MyClass)、それを認識します。私がやろうとすると:

module MyModule {
    import ABCD = A.B.C.D;

    export MyClass {
        //...
        public myFunc(obj:ABCD.MyClass) {}
    }
}

それは私にそれを教えてくれます'The name "ABCD" does not exist in the current scope."'

重要な場合は、すべてのクラスをエクスポートしますが、モジュールはエクスポートしません。含まれている定義ファイルを生成します(したがって、コンパイルすると、ABCDを含む定義ファイルがリストの最初になります)。

何か案は?

アップデート

ファイル構造を詳しく説明すると、次のようになります。

  • A
    • B
      • a.ts
      • b.ts
    • C
      • c.ts
      • d.ts

そして、他の場所でも私は持っているかもしれません:

  • A
    • D
      • e.ts
      • f.ts
      • E
        • g.ts
        • h.ts

この場合、最初のセットを次のようなものでコンパイルして、ABtsのようなものに組み込みます。

tsc A/B/a.ts A/B/b.ts A/B/C/c.ts A/B/C/d.ts --out A.B.ts --declarations

次に、次のパッケージに移動すると、次のようになります。

tsc /path/to/A.B.d.ts A/D/e.ts A/D/f.ts A/D/E/g.ts A/D/E/h.ts --out A.D.ts --declarations

私は、指定した一連のファイルを繰り返し処理することにより、これらのコンパイラコマンドを動的に構築し、それらのコンパイラのものを取得します。

4

1 に答える 1

1

AMDモジュールのロードパターンを使用してモジュールをロードするためにモジュールを複数のファイルにパッケージ化する場合は、次の手順を実行する必要があります...

moduleファイルの名前はモジュール名であり、宣言を追加しません

例えば...

module MyModule {
    export class MyClass {
    }
}

実際には次のようにMyModule.tsなります。

export class MyClass {
}

次に、以下を使用してロードします。

import my = module('MyModule');

現在、TypeScriptコードのバンドルスタイルと、互換性のないモジュールスタイルのロードを組み合わせようとしていると思います。バンドルする場合、ページ上のスクリプトを取得する責任を負うため、ファイル名は重要ではありません。AMDまたはCommonJSを使用している場合は、ファイルの命名規則(つまり、file-nameがモジュール名と等しい)を順守し、囲んでいるを省略する必要がありますmodule

補足として、これに影響を与える0.8.1.1のバグがあるため、0.8.1.1を使用している場合は、これを一読することをお勧めします:http: //typescript.codeplex.com/discussions/405800

于 2012-12-13T10:25:18.750 に答える