/**
 * 防抖工具类
 * 提供防抖功能，防止函数在短时间内被重复调用
 */
export class DebounceUtils {
  /**
   * 创建防抖函数
   * @param {Function} func - 要防抖的函数
   * @param {number} delay - 防抖延迟时间
   * @returns {Function} 防抖后的函数
   */
  static createDebounce(func: (...args: any[]) => void, delay: number) {
    let timerId: ReturnType<typeof setTimeout> | null = null;

    return function (this: unknown, ...args: any[]) {
      if (timerId) {
        clearTimeout(timerId);
      }

      timerId = setTimeout(() => func.apply(this, args), delay);
    };
  }
}
