假设我想扩展一个模块。同时我不想覆盖它的属性。在 JavaScript 中我会这样做:
var root = this; // window
(function(exports) {
if ('widget' in exports) return;
function widget() {
//
}
exports.widget = widget;
})(root.library || (root.library = {}));
似乎 TypeScript 提供了相同的使用 module
。但是以下列方式使用它会不加区别地覆盖之前在 library
上定义的任何 widget
属性:
module library {
export function widget() {
//
}
}
现在我可以使用前者,但如果我在函数内部创建一个 class
定义,TypeScript 会提示嵌套。如果我将定义放在函数之外,那么它就会被导出(比如在 window
上),这是我想要避免的。
有什么想法吗?
最佳答案
你可以用 vars 来做到这一点:
module library {
export var widget = function () {
//
}
}
module library{
if(library.widget){
return;
}
else{
library.widget = function(){
}
}
}
关于typescript - 在 TypeScript 中扩展而不覆盖模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17332380/