Typescript 实现一个简单的AOP,后置切面

最近回顾了下AOP——面向切面编程,刚好项目有需要用到,就使用了一下,感觉效果不错,代码贴出来,请拍砖。 主要用到的就是装饰器特性。 主要目的是在实例test.request方法调用后,自动顺序执行components和log方法 export function after(...args) { return (_target, name, descriptor) => { // 获取value,其实就是request函数 const oldValue = descriptor.value; // 将value重新赋值一个函数 descriptor.value = async function () { // tslint:disable-next-line: no-console console.log(`Calling ${name} with`, arguments); // 将原本的函数执行一下,apply改变this的指向 const val = await oldValue.apply(this, arguments) let…