Skip to content

Commit 62cfd05

Browse files
authored
Merge pull request #6999 from CharlesStover/patch-2
Update debouncer type accuracy
2 parents 0cc1075 + faad538 commit 62cfd05

File tree

1 file changed

+18
-8
lines changed
  • packages/docs/src/routes/docs/cookbook/debouncer

1 file changed

+18
-8
lines changed

packages/docs/src/routes/docs/cookbook/debouncer/index.mdx

+18-8
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,17 @@ The Qwik framework provides unique capabilities for managing state and effects i
3131

3232
<CodeFile src="/src/routes/demo/cookbook/mediaController/index.tsx">
3333
```tsx
34-
export const useDebouncer = (fn: QRL<(args: any) => void>, delay: number) => {
34+
export const useDebouncer = <A extends readonly unknown[], R>(
35+
fn: QRL<(...args: A) => R>,
36+
delay: number,
37+
): QRL<(...args: A) => void> => {
3538
const timeoutId = useSignal<number>();
3639

37-
return $((args: any) => {
38-
clearTimeout(timeoutId.value);
39-
timeoutId.value = Number(setTimeout(() => fn(args), delay));
40+
return $((...args: A): void => {
41+
window.clearTimeout(timeoutId.value);
42+
timeoutId.value = window.setTimeout((): void => {
43+
void fn(...args);
44+
}, delay);
4045
});
4146
};
4247
```
@@ -93,12 +98,17 @@ We can leverage Qwik's `implicit$FirstArg` function to create a `useDebouncer$`
9398
This is how Qwik actually implements all of its built-in $ hooks.
9499

95100
```tsx
96-
export const useDebouncerQrl = (fn: QRL<(args: any) => void>, delay: number) => {
101+
export const useDebouncerQrl = <A extends readonly unknown[], R>(
102+
fn: QRL<(...args: A) => R>,
103+
delay: number,
104+
): QRL<(...args: A) => void> => {
97105
const timeoutId = useSignal<number>();
98106

99-
return $((args: any) => {
100-
clearTimeout(timeoutId.value);
101-
timeoutId.value = Number(setTimeout(() => fn(args), delay));
107+
return $((...args: A): void => {
108+
window.clearTimeout(timeoutId.value);
109+
timeoutId.value = window.setTimeout((): void => {
110+
void fn(...args);
111+
}, delay);
102112
});
103113
};
104114

0 commit comments

Comments
 (0)