interface mycbdInterface {
alert(name: string): void,
one?: string
}
//函数装饰器
const myconsole: MethodDecorator = (...rest) => {
console.log(rest, "rest")
}
//类装饰器
const mylog2: ClassDecorator = (target) => {
console.log(target, "target")
target.prototype.one = "一个" //原型写入一些属性
}
//参数装饰器
const paramsLog: ParameterDecorator = (...rest) => {
console.log(rest, "paramsLog")
}
//属性装饰器
const nameLog: PropertyDecorator = (target, propertyKey) => {
console.log(target, "target-nameLog")
console.log(propertyKey, "propertyKey-nameLog")
}
@mylog2
class mycbd implements mycbdInterface {
@nameLog
myname: string = "abc"
@myconsole
alert(@paramsLog name: string) {
}
}
let tabc: mycbdInterface = new mycbd;
console.log(tabc.one) //打印出一个
console.log(tabc, "tabc")
tabc.alert("我传入的")
前端工程师、程序员