Может быть, кто-то может посоветовать, я реализовал простой декоратор, который принимает метод, добавляет некоторые логики c и возвращает метод с той же сигнатурой.
type Method = (...args: any[]) => Promise<any>
const useBusy = <T extends Method>(method: T): [boolean, T] => {
const [isBusy, setIsBusy] = useState(false);
const wrappedMethod = async (...args: any[]) => {
setIsBusy(true);
const result = await method.apply(this, args);
setIsBusy(false)
return result;
}
return [isBusy, wrappedMethod as T];
}
export default useBusy;
Можно ли сделать то же самое но вместо массива вернуть объект {IsBusy, метод}? Но я хочу сохранить имя переданного метода, например, если я сделаю следующее:
const {isBusy, myMethod} = useBusy(myMethod)
Я хочу, чтобы машинопись проверяла имена ответов, должны быть разрешены только isBusy и myMethod.
Is это возможно?