2016-05-11 4 views
0

私は自動的に活字ファイルをコンパイルするためのIntelliJ IDEAのファイルウォッチャーを使用していますが、何らかの理由でそれがブロック/関数クロージャ内で定義されたクラスを好きではないです:クロージャでTypeScriptクラスを作成する方法はありますか?

enter image description here

はしなくても、これを回避する方法はありますすべてをトップレベル/グローバルスコープに移行しますか?

答えて

1

モジュール/ファイルからクラスをエクスポートしないと、クラスはグローバルに表示されません。つまり、クラス定義を関数スコープで囲む必要はありません。

TSのモジュールについての詳細:あなたが目指しているように見える実質的に同じJavaScriptで活字体の結果で次のコードを使用してhttps://www.typescriptlang.org/docs/handbook/modules.html

+0

真ですが、クラスへの参照を格納するオブジェクトが同じスコープ内にある場合は、グローバルスコープに直接公開されますか? (問題のスクリーンショットを参照してください) – bigp

+0

(続き)ああ、私はあなたが今言っていることを見ていると思います。基本的にクラスへの参照を格納するのは意味がありません。その作業は基本的にモジュールで定義することによって行われます。 – bigp

+1

正しいのですが、あなたはTSの点で考えています.TS(とその点についてはES6)の仕組みを考えなければなりません。 – pablochan

2

...

コード結果の
namespace MY_NAMESPACE { 
    export class AssetService { 

    } 
} 

var MY_NAMESPACE; 
(function (MY_NAMESPACE) { 
    var AssetService = (function() { 
     function AssetService() { 
     } 
     return AssetService; 
    }()); 
    MY_NAMESPACE.AssetService = AssetService; 
})(MY_NAMESPACE || (MY_NAMESPACE = {})); 

を実際ににしたい場合は、スコープを小さくして、外部モジュール(AKA "mod" ules "最近)。

関連する問題