Appearance
前言
记录一下装饰器metadata等特性
装饰器
装饰器设计模式的实现,通过对类相关的包装,在不破坏原有类结构情况下,对类进行包裹封装。
装饰器有类装饰器,属性装饰器,方法装饰器,构造器装饰器,参数装饰器。每种装饰器的参数有所区别。装饰器的执行顺序由上到下,又左到右,类似于compose的方式执行比如 @f @g 执行是 f(g(target))。
类装饰器
对类本省就行修改添加和重写的装饰器
ts
function AddPrototype(prototype) {
return function(target: new (...args: any[]) => any) {
target.prototype = Object.create(prototype);
target.prototype.constructor = target;
return target
}
}
@AddPrototype({ a: 1 })
class Test {}
(new Test).a // 1属性装饰器
对类的属性进行装饰
ts
@Reflect
提供了一系列的基础操作,比如. delete 等操作符的函数化,也提供了metadata元数据编程的能力。
metadata
元数据,通过文件来举例,一个文件,除了文件内容外。还有一些比如作者,创建时间,更新时间等和文件内容无关的数据称为元数据,我们可以理解外附加在某个数据上的额外数据。目前ts中元数据只能附加在class或者class的属性上()
