13 lines
444 B
TypeScript
13 lines
444 B
TypeScript
/**
|
|
* Returns a debounced version of fn that delays invocation until after
|
|
* `delay` ms have elapsed since the last call.
|
|
*/
|
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
export function debounce<T extends (...args: any[]) => void>(fn: T, delay: number): T {
|
|
let timer: ReturnType<typeof setTimeout>;
|
|
return ((...args: Parameters<T>) => {
|
|
clearTimeout(timer);
|
|
timer = setTimeout(() => fn(...args), delay);
|
|
}) as T;
|
|
}
|