2

モジュールを拡張したいとしましょう。同時に、そのプロパティをオーバーライドしたくありません。JavaScript では、次のようにします。

var root = this; // window
(function(exports) {
    if ('widget' in exports) return;

    function widget() {
        //
    }

    exports.widget = widget;

})(root.library || (root.library = {}));

TypeScript は同じ using を提供しているようですmodule。ただし、次の方法で使用すると、 でwidget以前に定義されたプロパティが無差別にオーバーライドされlibraryます。

module library {
    export function widget() {
        //
    }
}

class前者を使用できるようになりましたが、関数内で定義を作成すると、TypeScript は定義のネストについて不平を言います。定義を関数の外に置くと、それはエクスポートされます (たとえば on window)。これは避けたいことです。

何か案は?

4

3 に答える 3

0

あなたはvarsでそれを行うことができます:

module library {
    export var  widget = function () {
        //
    }
}

module library{
    if(library.widget){
        return;
    }
    else{
        library.widget = function(){            
        }   
    }   
}

それを試してみてください。

于 2013-06-27T01:49:00.677 に答える
0

OK user error、次は正常に機能し、私が受け取っている唯一の警告は関数定義の外に戻ることですが、それは TypeScript エラーではありません:

module library {
    if (library.widget) {
        return;
    }

    class Internal {

    }

    export function widget() {

    }
}
于 2013-06-27T08:07:22.563 に答える