export function debounce any>(func: T, wait: number): (...args: Parameters) => void { let timeout: NodeJS.Timeout; return function executedFunction(...args: Parameters) { const later = () => { clearTimeout(timeout); func(...args); }; clearTimeout(timeout); timeout = setTimeout(later, wait); }; }