假设我想扩展一个模块。同时我不想覆盖它的属性。在 JavaScript 中,我会这样做:
var root = this; // window
(function(exports) {
if ('widget' in exports) return;
function widget() {
//
}
exports.widget = widget;
})(root.library || (root.library = {}));
看起来 TypeScript 使用module
. 但是以下列方式使用它会不分青红皂白地覆盖widget
之前定义的任何属性library
:
module library {
export function widget() {
//
}
}
现在我可以使用前者,但是如果我在函数中创建一个定义,TypeScript 就会抱怨嵌套class
定义。如果我将定义放在函数之外,那么它会被导出(比如 on window
),这是我想要避免的。
有任何想法吗?