2

以下の typescript コードでアラートを呼び出しやすくする方法はありますか。私のアラートがコード化されている場所は次のとおりです。

module Admin.Shared.Alerts {
    export class alerts {
        static mvcOnFailure(message: string) {
            dialog.alertWin("Internal Application Error", message);
        }
    }

}

これは、私がそれを呼び出す場所の小さなスニペットの例です:

module Admin.MyAccount.Access {
    export function ajaxDone(data: string, textStatus: string, jqXHR: JQueryXHR) {       
        Admin.Shared.Alerts.alerts.mvcOnFailure("x");
    }

}

問題は、アラートを呼び出す文字列が非常に長いことです。"Admin.Shared.Alerts" を指定する必要がない C# で "using" のようなことを行う方法はありますか?

4

2 に答える 2

4

確かにあります。私はそれをお勧めしませんが、あなたが探しているのはwithステートメントです:

module Admin.MyAccount.Access {
    export function ajaxDone(data: string, textStatus: string, jqXHR: JQueryXHR) {       
        with (Admin.Shared.Alerts) {
            alerts.mvcOnFailure("x");
        }
    }
}

注:あなたの質問に対するコメントで@Richardが提供するソリューションを使用したいと思います。

于 2012-11-15T08:37:50.720 に答える
3

この点に関して、2つの推奨事項があります。1つ目は、モジュール構造を再検討することです。「Common」、「Shared」、「Core」などの名前空間が表示されるとすぐに、問題があることがわかります。これらは、内部のコードが実行する可能性のあることを説明する単語ではないためです。良い名前は「メッセージ」、「アラート」、「支払い」です。そこにあるものの種類をすぐに知ることができます。

したがって、推奨事項1は、「共有」名前空間を削除することです。

module Admin.Alerts {

大規模なTypeScriptプログラムを構築している場合は、CommonJSアプリケーションで一般的に使用されているモジュールパターンに従うことをお勧めします。単純なモジュール名を使用しますが、それらをフォルダーにネストします。

。\Admin\ Alerts.ts

module Alerts {

を使用してモジュールをインポートします

import alerts = module('.\Admin\Alerts.ts');

そして、そのalerts名前でコードに使用します。

Webアプリでは、requires.jsなどのモジュールローダーを使用してすべての読み込みを処理するため、追加の作業はそれほど必要ありません。また、フラグを使用してコードを作成するようにコンパイラーに指示します。 ..

tsc --module commonjs Alerts.ts
于 2012-11-15T09:11:08.417 に答える