function debounce<T extends (...args: unknown[]) => void>(
fn: T,
delay: number
): (...args: Parameters<T>) => void {
let timer: ReturnType<typeof setTimeout>
return (...args: Parameters<T>) => {
clearTimeout(timer)
timer = setTimeout(() => fn(...args), delay)
}
}
// Usage:
const handleSearch = debounce((query: string) => {
console.log('Searching for:', query)
}, 300)
Press Enter to send ยท Shift+Enter for new line