1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| type CallbackFunc<T extends unknown[]> = (...args: T) => void
|
| export function debounce<T extends unknown[]>(
| func: CallbackFunc<T>,
| wait: number,
| ): (...args: T) => void {
| let timeoutId: ReturnType<typeof setTimeout> | undefined
|
| return (...args: T) => {
| const later = () => {
| clearTimeout(timeoutId)
| func(...args)
| }
|
| clearTimeout(timeoutId)
| timeoutId = setTimeout(later, wait)
| }
| }
|
|