class Service {
getData(): string {
return '原始数据';
}
}
function injectService(target: any, propertyKey: string, descriptor: PropertyDescriptor) {
const originalMethod = descriptor.value;
descriptor.value = function (...args: any[]) {
const service = new Service();
const data = service.getData();
const result = originalMethod.apply(this, args);
return `${data} - ${result}`;
};
return descriptor;
}
class Consumer {
@injectService
consume(): string {
return '消费的数据';
}
}
const consumer = new Consumer();
console.log(consumer.consume());