我有一些需要访问数据库的功能。
const dbProcess1 = (s1: string) => {
console.log(`dbProcess1 is called with a param : ${s1}`)
};
const dbProcess2 = (s2: string,n2: number) => {
console.log(`dbProcess2 is called with params : ${s2},${n2}`)
};
const dbProcess3 = (s1: string,s2: string,n2: number) => {
dbProcess1(s1);
dbProcess2(s2,n2);
};
我想在这些过程之前和之后控制微调器。 下面的装饰器是我的方法。
const withSpinner = (process: (...params: any[]) => void) => {
return (...params: any[]) => {
console.log('display spinner');
process(...params);
console.log('stop spinner');
}
};
const dbProcess1WithSpinner = withSpinner(dbProcess1);
const dbProcess2WithSpinner = withSpinner(dbProcess2);
const dbProcess3WithSpinner = withSpinner(dbProcess3);
dbProcess1WithSpinner('p1');
dbProcess2WithSpinner('p2','42');
dbProcess3WithSpinner('p1','p2','42');
但是,这种方法使类型提示无用:
const dbProcess3: (s1: string,n2: number) => void
成为
const dbProcess3WithSpinner: (...params: any[]) => void
有什么建议可以改善它吗?