私は自動的に活字ファイルをコンパイルするためのIntelliJ IDEAのファイルウォッチャーを使用していますが、何らかの理由でそれがブロック/関数クロージャ内で定義されたクラスを好きではないです:クロージャでTypeScriptクラスを作成する方法はありますか?
はしなくても、これを回避する方法はありますすべてをトップレベル/グローバルスコープに移行しますか?
私は自動的に活字ファイルをコンパイルするためのIntelliJ IDEAのファイルウォッチャーを使用していますが、何らかの理由でそれがブロック/関数クロージャ内で定義されたクラスを好きではないです:クロージャでTypeScriptクラスを作成する方法はありますか?
はしなくても、これを回避する方法はありますすべてをトップレベル/グローバルスコープに移行しますか?
モジュール/ファイルからクラスをエクスポートしないと、クラスはグローバルに表示されません。つまり、クラス定義を関数スコープで囲む必要はありません。
TSのモジュールについての詳細:あなたが目指しているように見える実質的に同じJavaScriptで活字体の結果で次のコードを使用してhttps://www.typescriptlang.org/docs/handbook/modules.html
...
コード結果の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 "最近)。
真ですが、クラスへの参照を格納するオブジェクトが同じスコープ内にある場合は、グローバルスコープに直接公開されますか? (問題のスクリーンショットを参照してください) – bigp
(続き)ああ、私はあなたが今言っていることを見ていると思います。基本的にクラスへの参照を格納するのは意味がありません。その作業は基本的にモジュールで定義することによって行われます。 – bigp
正しいのですが、あなたはTSの点で考えています.TS(とその点についてはES6)の仕組みを考えなければなりません。 – pablochan