function debounce( func: (...args: Args) => Promise | R, delay: number, ) { let timeout: ReturnType; return (...args: Args) => { clearTimeout(timeout); timeout = setTimeout(() => func(...args), delay); }; } export default debounce;