function throttle<Fn extends (...args: any[]) => any>( fn: Fn, ms: number = 333 ): (...args: Parameters<Fn>) => void { let throttledFn = () => undefined; let throttled: boolean = false; return (...args: Parameters<Fn>): void => { throttledFn = () => fn(...args); if (throttled) return; setTimeout(() => { throttledFn(); throttled = false; }, ms); throttled = true; }; } export default throttle;