/** * 节流函数(Throttle) * @param {Function} func - 需要节流的函数 * @param {number} delay - 节流时间(毫秒) * @returns {Function} - 返回节流后的函数 */ // utils/throttle.ts export function throttle<T extends (...args: any[]) => any>( func: T, delay: number ): (...args: Parameters<T>) => void { let lastTime = 0; return function (...args: Parameters<T>) { const now = Date.now(); if (now - lastTime >= delay) { func(...args); // 直接展开参数,无需 this lastTime = now; } }; } /** * 防抖函数(TypeScript 版本) * @param func 需要防抖的函数 * @param delay 延迟时间(毫秒) * @param immediate 是否立即执行第一次调用 * @returns 防抖处理后的函数 */ export function debounce<T extends (...args: any[]) => any>( func: T, delay: number, immediate: boolean = false ): (...args: Parameters<T>) => void { let timer: ReturnType<typeof setTimeout> | null = null; return function (this: ThisParameterType<T>, ...args: Parameters<T>) { if (immediate && !timer) { func.apply(this, args); } if (timer) { clearTimeout(timer); } timer = setTimeout(() => { if (!immediate) { func.apply(this, args); } timer = null; }, delay); }; }引用使用