Я создал декоратор для обработки определенной ошибки в моем сервисе.Я добился этого следующим образом:
interface MyServiceInterface {
doBar(otherParam: number): string;
doFoo(param1: string, param2: number): string;
}
class MyServiceClass implements MyServiceInterface {
doFoo(param1: string, param2: number): string {
throw new Error("I SHOULD BE CAUGHT");
}
doBar(otherParam: number): string {
throw new Error("I SHOULD BE CAUGHT");
}
}
class MyDecorator implements MyServiceInterface {
constructor(private service: MyServiceInterface) {
}
public doFoo(param1: string, param2: number): string {
try {
return this.service.doFoo(param1, param2);
} catch (e) {
return "THIS SPECIAL CASE IS NOW RESOLVED";
}
}
public doBar(otherParam: number): string {
try {
return this.service.doBar(otherParam);
} catch (e) {
return "THIS SPECIAL CASE IS NOW RESOLVED";
}
}
}
const instance = new MyDecorator(new MyServiceClass());
console.log([
instance.doBar(1),
instance.doFoo("biz", 2),
].join("\n"));
Мне не нравится повторяться в декораторе, и поэтому я хочу, чтобы мой блок catch был более динамичным.Я хочу передать функцию и все аргументы в одну функцию, так как моя обработка ошибок будет одинаковой.
Как мне этого добиться?