export default function debounce unknown>(executor: T, delay: number) { let timeout: NodeJS.Timeout | null; return function(...args: Parameters): void { const callback = () => { timeout = null; Reflect.apply(executor, null, args); }; if (timeout) clearTimeout(timeout); timeout = setTimeout(callback, delay); }; }