装饰器与高级ES6特性及Angular项目模板解析
装饰器工厂
对于需要参数的装饰器,标准解决方案是使用装饰器工厂。装饰器工厂是一个函数,它接受所有必要的参数,并返回一个在其内部定义的匿名函数作为实际的装饰器代码。这样,装饰器工厂接收到的参数在具有相同词法作用域的匿名函数中也是可见的。
示例代码如下:
function IAmADecoratorFactory(par1, par2, ...){
...
return function(target: any){
// par1 在这里也可见
if(par1)....
...
// par2 在匿名函数内部也可见
...par2 + "...."...
};
}
将 logClass 转换为装饰器工厂的代码如下:
export function logClass(production?: any) {
if (production) return () => { };
return function(target: any) {
// 存储原始构造函数
var original = target;
// 以下代码不变
...
}
}
如果 production
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



