【发布时间】:2018-01-11 11:26:57
【问题描述】:
我想为 typescript 中的命名空间编写一个中间件。因此,当调用命名空间中的任何函数时,中间件应该触发并检查是否可以执行预期的函数。示例:
namespace Foo.Bar {
function middleware(next) {
if (enabled) next();
}
export function baz() {
// Do Something
}
}
如果我调用 baz Foo.Bar.baz(),我希望我的中间件方法首先触发。
如果是模块,我可以像这样导出函数对象:
export {baz: middleware}
但命名空间不允许这样做。有什么建议吗?
【问题讨论】:
-
你能在问题中提供一个例子吗
-
namespace Foo.Bar { applyMiddleWare(next) { if (enabled) next(); } export function trigger() { // So Something } }所以当触发方法被调用时,我想先执行一个中间件函数。而那个中间件将决定是否执行触发功能。 -
这个问题很快就会被关闭,除非你用更好的解释和一些代码来编辑它。
-
如果我可以维护 Foo.Bar 和调用函数,我可以将它更新为类。所以我仍然必须调用 Foo.Bar.baz() 因为我的所有应用程序都是使用它构建的,我现在不想更改这个命名约定。
标签: javascript typescript ecmascript-6 namespaces javascript-namespaces