export function debounced void>(func: T, delay: number) { let debounceTimeout: ReturnType; return (...args: Parameters) => { if (debounceTimeout !== undefined) { clearTimeout(debounceTimeout); } debounceTimeout = setTimeout(() => { func(...args); }, delay); }; }