21 lines
475 B
TypeScript
21 lines
475 B
TypeScript
/*
|
|
* Debounce function that takes a function and a delay time as parameters
|
|
*/
|
|
export type DebouncedFunction<T extends (...args: any[]) => any> = (
|
|
...args: Parameters<T>
|
|
) => void
|
|
|
|
export function debounce<T extends (...args: any[]) => any>(
|
|
func: T,
|
|
delay: number
|
|
): DebouncedFunction<T> {
|
|
let timeoutId: ReturnType<typeof setTimeout>
|
|
|
|
return (...args) => {
|
|
clearTimeout(timeoutId)
|
|
timeoutId = setTimeout(() => {
|
|
func(...args)
|
|
}, delay)
|
|
}
|
|
}
|