(delay: number, fn: F)
| 1 | type AnyFn = (...args: any[]) => void; |
| 2 | |
| 3 | export function debounce<F extends AnyFn>(delay: number, fn: F): F { |
| 4 | let timeoutId: ReturnType<typeof setTimeout> | null = null; |
| 5 | return ((...args: any[]) => { |
| 6 | if (timeoutId) { |
| 7 | clearTimeout(timeoutId); |
| 8 | } |
| 9 | timeoutId = setTimeout(() => { |
| 10 | timeoutId = null; |
| 11 | fn(...args); |
| 12 | }, delay); |
| 13 | }) as F; |
| 14 | } |
no outgoing calls
no test coverage detected