让我们说我想扩展一个模块。同时我不想重写它的属性。在JavaScript中,我会做:在TypeScript中扩展不覆盖模块
var root = this; // window
(function(exports) {
if ('widget' in exports) return;
function widget() {
//
}
exports.widget = widget;
})(root.library || (root.library = {}));
这似乎使用module
是打字稿提供相同。但使用它通过以下方式将不加区别地替代了以前的library
定义的任何widget
属性:
module library {
export function widget() {
//
}
}
现在我可以使用前者,但随后打字稿抱怨嵌套一个class
定义,如果我创建一个函数内部。如果我把这个定义放在函数之外,那么它就会被导出(比如window
),这是我想要避免的。
任何想法?
为此避免基于类的继承的动机是什么? – Fenton
@SteveFenton你能提供一个例子吗?我的答案在底部做我正在寻找的东西。 – Radek