DS
Back to TypeScript

debounce.ts

typescript/utils/debounce.ts
TypeScript

Type-safe debounce utility that delays function execution until after a specified wait period.

debounce.ts
/**
 * @description Type-safe debounce utility that delays function execution until after a specified wait period.
 * @tags utility, performance, async, throttle
 */
export function debounce<T extends (...args: Parameters<T>) => ReturnType<T>>(
  fn: T,
  wait: number
): (...args: Parameters<T>) => void {
  let timer: ReturnType<typeof setTimeout>;

  return function (...args: Parameters<T>): void {
    clearTimeout(timer);
    timer = setTimeout(() => fn(...args), wait);
  };
}