3

それぞれが同じモジュール識別子を持つ 1 つのクラスを含む複数の *.ts ファイルをコンパイル (--out) すると、*.js ファイルが作成され、各クラスが独自のクロージャーでラップされ、モジュールの参照が各クロージャーに渡されます。

例:

Bar.ts:

module baz {export class Bar {}}

足:

module baz { export class Foo {}}

out.js

var baz
(function(baz){ var Bar = ... })(baz);
(function(baz){ var Foo = ... })(baz);

コンパイラが両方のクラスが宣言されている 1 つのクロージャーを作成するように、両方のクラスを 1 つのファイルに含める方法はありますか? すべてのクラスを 1 つの *.ts ファイルに配置することは、非常に悪い考えのようです。

目的は次のとおりです。

  1. クラスごとに 1 つの *.ts ファイルを使用する
  2. モジュールのすべてのクラスで、エクスポートされていないクラスを使用する
  3. モジュールにクリーンなインターフェースを提供する

私が実際に意味することのダーツのような擬似コード:

baz.ts

module baz {
    part "Foo.ts";
    part "Bar.ts";
}

フッツ

part of "baz.ts";
export class Foo {}

Bar.ts

part of "baz.ts";
export class Bar {}

読んでくれてありがとう、

マーティン

4

1 に答える 1

1

TypeScript では、質問の難点はポイント 2 です。モジュールを複数のファイルに分割する場合は、他のファイルで使用できるようにするクラスをエクスポートする必要があります。

もちろん、これは、消費者がこれらのクラスのすべてを一覧表示することも意味します。これは、モジュールへのクリーンなインターフェイスを提供するというあなたのポイントに影響を与えると理解しています。制約が与えられた場合のモジュールとクラスの構造化に対する答えは、個々の状況によって異なります。私はモジュールを広い名前空間として扱うのではなく、非常に狭く具体的なものにする傾向があるため、さまざまな通信方法を表すさまざまなクラスを持つAjaxモジュールではなく、モジュールを使用します。Communication

于 2013-02-13T10:09:43.477 に答える