18

私は大規模なコードベースを Typescript に移行しようとしていますが、特定のものをいつどこで使用する必要があるかを把握したいと考えていました。

現在、モジュールにいくつかの大きな名前空間があります。

(function (nameSpace) {

    var privateVariables = '';

    function privateFunctions () { }        

    // Public methods
    nameSpace.someMethodHere = function () { };

}(window.nameSpace = window.nameSpace || {}));

私の質問はTypeScriptにあります。これらをただのクラスに変えるだけで違い/利点はありますか? それとも、内部にクラス (各メソッド) を持つ 1 つの大きなモジュールにする必要がありますか?

module nameSpace {

    export class someMethodHere {
       // etc
    }

    // more classes (my methods) here ??
}

-また-

class nameSpace {

    someMethodHere () {
        // code
    }
    // more prototyped methods here
}   

それとも、現在持っているのと同じモジュールの方法でそれらを設定する必要がありますか? 私は試していましたが、エラーが発生し続けましnameSpace.someMethodHereた。クラスのないモジュール内でどうすればよいかわかりません!

4

2 に答える 2

20
  • 一般的な用途がライブラリ用であるシングルトン(どこからでもアクセス可能な 1 つの静的オブジェクト)の適切なオプションとしてモジュールを使用することを検討してください。
  • このクラスの複数のインスタンスを作成する必要がある場合、またはこのクラスを拡張する予定がある場合は、クラスの使用を検討してください。

基本的に、モジュールはすべてのコードを 1 つの便利なグローバル オブジェクトにまとめるのに適していますが、クラスはコードとデータ表現を構造化するのに適しています。

[編集] 「内部モジュール」は「名前空間」に名前が変更されました。さらに、モジュールをインポートできるときに名前空間を使用することはお勧めできません。名前空間は部分的 (つまり、多くのファイルで記述) にすることができます。これは便利な場合もありますが、このアプローチはグローバルすぎて、コンパイラによって適切に最適化されません。詳細はこちら

于 2015-10-07T05:10:48.010 に答える
12

場合によります。モジュールは、異なるクラスの単なる寄せ集めではなく、「もの」の個別のセットであるべきです。したがって、それらが一緒に属しているように見える場合は、モジュールを使用してそれらをグループ化します。

TypeScript チームは、ガイダンスを公開する前に、人々が言語をどのように使用するかを確認するのを待っていると思いますが、人々は現在スクリプトを公開しているモジュールを公開すると思います。したがって、jQuery はモジュールになり、各 jQuery プラグインはモジュールになり、たとえば、テスト フレームワークはモジュールになり、AOP フレームワークはモジュールになります。

于 2012-11-06T17:09:58.203 に答える