TypeScript 装饰器:优雅地实现方法执行前的逻辑校验
可以使用装饰器来实现这一逻辑,将逻辑代码A封装为一个装饰器,然后在每个方法上添加该装饰器。
首先定义一个装饰器函数checkA,该函数接收一个方法作为参数,并返回一个新的方法。在新的方法中,先执行逻辑代码A,若通过则继续执行原方法,否则直接退出。
具体实现如下:
function checkA(target: any, propertyKey: string, descriptor: PropertyDescriptor) {
const originalMethod = descriptor.value;
descriptor.value = function (...args: any[]) {
// 执行逻辑代码A,例如验证参数等
if (A) {
// 通过则继续执行原方法
originalMethod.apply(this, args);
} else {
// 未通过则退出
console.log('A未通过');
}
};
return descriptor;
}
class MyClass {
@checkA
method1() {
// 方法1的逻辑代码
}
@checkA
method2() {
// 方法2的逻辑代码
}
// 其他方法...
}
在上述代码中,checkA装饰器函数接收三个参数:target表示装饰的目标对象,propertyKey表示装饰的方法名,descriptor表示方法的属性描述符。在装饰器函数内部,将原方法重写为一个新的方法,在新方法中先执行逻辑代码A,然后根据结果决定是否继续执行原方法。
通过在需要执行逻辑代码A的方法上添加@checkA装饰器,即可实现在每个方法执行前都先执行逻辑代码A的逻辑。这样就不需要复制粘贴逻辑代码A,同时也保持了代码的优雅性。
原文地址: https://www.cveoy.top/t/topic/pfrf 著作权归作者所有。请勿转载和采集!