// 2. 属性装饰器
function loginProperty(attrValue) {
return function (targetclassPrototype, attrname) {
console.log("targetclassPrototype:", targetclassPrototype);
console.log("attrname:", attrname);
targetclassPrototype.constructor.custLevelDescri = function () {
console.log("消费5000元升级为贵宾");
console.log("消费10000元升级为贵宾,赠送微波炉一个");
};
};
}
// 3.目标类
var CustomerService = /** @class */ (function () {
function CustomerService() {
this.custname = "王五";
}
CustomerService.prototype.show = function () {
console.log("顾客名:", this.custname);
};
__decorate([
loginProperty("顾客登记")
], CustomerService.prototype, "degree");
return CustomerService;
}());
CustomerService.custLevelDescri();
上面贴的是课件里的源码, 只有实例化一个类的时候才能操作属性呀, 上面的装饰器仅仅是在类上加了一个静态方法, 和属性完全不沾边呀
而且讲道理属性装饰器传递targetClass不是比targetClassPrototype更方便吗, TS这么设计是有什么考量吗