export function debounce void>( fn: T, delay: number ) { let timeoutId: NodeJS.Timer | undefined; return (...args: Parameters) => { if (timeoutId) { clearTimeout(timeoutId); } timeoutId = setTimeout(() => { fn(...args); timeoutId = undefined; }, delay); }; } export function ts() { return new Date().getTime(); }