/**
*类装饰器
*/
function log(name: string) {
return function(target: any) {
target.prototype.name = name;
};
}
/**
* 方法装饰器
*/
function logM(n: number) {
return function(target: any, key: string, d: PropertyDescriptor) {
d.value = function() {
console.log(n);
};
};
}
/**
* 属性装饰器
*/
function logP(arms: string) {
return function(target: any, key: string) {
target[key] = arms;
};
}
/**
* 访问器装饰器
*/
function logG() {
return function(target: any, key: string, d: PropertyDescriptor) {
d.get = function() {
console.log("get");
};
};
}
/**
* 参数装饰器
*/
function logA(target: object, key: any, n: number) {
console.log(key, n);
}
@log("A")
class A {
@logP("hello")
info: string;
constructor() {
}
@logM(102)
e() {
console.log("run");
}
f() {
console.log(this.info);
}
@logG()
get test() {
return this.info;
}
reset(@logA info: number) {
}
}
let q: any = new A();
console.log(q.name);
console.log(q.info);
q.test;
q.e();
q.reset(1);
1.4 装饰器的简单示例
最新推荐文章于 2024-05-17 13:52:13 发布