Skip to content

Commit 80ea3d0

Browse files
committed
fix(useEffectUpdate): add overloads with generic types
fix #14
1 parent 37ad771 commit 80ea3d0

1 file changed

Lines changed: 123 additions & 3 deletions

File tree

src/index.tsx

Lines changed: 123 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,121 @@ export const useWorker = <TArgs extends readonly any[], TRet>(
8484
return { callback, error, isLoading, setError, setIsLoading };
8585
};
8686

87+
/**
88+
* Executes a effect and sends to its callback the previous state.
89+
*
90+
* @param effect The effect to be executed. Receives the dependencies' previous state as arguments.
91+
* @param dependencies The effect's dependencies.
92+
*/
93+
export function useEffectUpdate<T1>(
94+
effect: (oldState: [T1]) => void | (() => void),
95+
dependencies: [T1],
96+
): void;
97+
98+
/**
99+
* Executes a effect and sends to its callback the previous state.
100+
*
101+
* @param effect The effect to be executed. Receives the dependencies' previous state as arguments.
102+
* @param dependencies The effect's dependencies.
103+
*/
104+
export function useEffectUpdate<T1, T2>(
105+
effect: (oldState: [T1, T2]) => void | (() => void),
106+
dependencies: [T1, T2],
107+
): void;
108+
109+
/**
110+
* Executes a effect and sends to its callback the previous state.
111+
*
112+
* @param effect The effect to be executed. Receives the dependencies' previous state as arguments.
113+
* @param dependencies The effect's dependencies.
114+
*/
115+
export function useEffectUpdate<T1, T2, T3>(
116+
effect: (oldState: [T1, T2, T3]) => void | (() => void),
117+
dependencies: [T1, T2, T3],
118+
): void;
119+
120+
/**
121+
* Executes a effect and sends to its callback the previous state.
122+
*
123+
* @param effect The effect to be executed. Receives the dependencies' previous state as arguments.
124+
* @param dependencies The effect's dependencies.
125+
* @category Effects
126+
*/
127+
export function useEffectUpdate<T1, T2, T3, T4>(
128+
effect: (oldState: [T1, T2, T3, T4]) => void | (() => void),
129+
dependencies: [T1, T2, T3, T4],
130+
): void;
131+
132+
/**
133+
* Executes a effect and sends to its callback the previous state.
134+
*
135+
* @param effect The effect to be executed. Receives the dependencies' previous state as arguments.
136+
* @param dependencies The effect's dependencies.
137+
*/
138+
export function useEffectUpdate<T1, T2, T3, T4, T5>(
139+
effect: (oldState: [T1, T2, T3, T4, T5]) => void | (() => void),
140+
dependencies: [T1, T2, T3, T4, T5],
141+
): void;
142+
143+
/**
144+
* Executes a effect and sends to its callback the previous state.
145+
*
146+
* @param effect The effect to be executed. Receives the dependencies' previous state as arguments.
147+
* @param dependencies The effect's dependencies.
148+
*/
149+
export function useEffectUpdate<T1, T2, T3, T4, T5, T6>(
150+
effect: (oldState: [T1, T2, T3, T4, T5, T6]) => void | (() => void),
151+
dependencies: [T1, T2, T3, T4, T5, T6],
152+
): void;
153+
154+
/**
155+
* Executes a effect and sends to its callback the previous state.
156+
*
157+
* @param effect The effect to be executed. Receives the dependencies' previous state as arguments.
158+
* @param dependencies The effect's dependencies.
159+
*/
160+
export function useEffectUpdate<T1, T2, T3, T4, T5, T6, T7>(
161+
effect: (oldState: [T1, T2, T3, T4, T5, T6, T7]) => void | (() => void),
162+
dependencies: [T1, T2, T3, T4, T5, T6, T7],
163+
): void;
164+
165+
/**
166+
* Executes a effect and sends to its callback the previous state.
167+
*
168+
* @param effect The effect to be executed. Receives the dependencies' previous state as arguments.
169+
* @param dependencies The effect's dependencies.
170+
*/
171+
export function useEffectUpdate<T1, T2, T3, T4, T5, T6, T7, T8>(
172+
effect: (oldState: [T1, T2, T3, T4, T5, T6, T7, T8]) => void | (() => void),
173+
dependencies: [T1, T2, T3, T4, T5, T6, T7, T8],
174+
): void;
175+
176+
/**
177+
* Executes a effect and sends to its callback the previous state.
178+
*
179+
* @param effect The effect to be executed. Receives the dependencies' previous state as arguments.
180+
* @param dependencies The effect's dependencies.
181+
*/
182+
export function useEffectUpdate<T1, T2, T3, T4, T5, T6, T7, T8, T9>(
183+
effect: (
184+
oldState: [T1, T2, T3, T4, T5, T6, T7, T8, T9],
185+
) => void | (() => void),
186+
dependencies: [T1, T2, T3, T4, T5, T6, T7, T8, T9],
187+
): void;
188+
189+
/**
190+
* Executes a effect and sends to its callback the previous state.
191+
*
192+
* @param effect The effect to be executed. Receives the dependencies' previous state as arguments.
193+
* @param dependencies The effect's dependencies.
194+
*/
195+
export function useEffectUpdate<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(
196+
effect: (
197+
oldState: [T1, T2, T3, T4, T5, T6, T7, T8, T9, T10],
198+
) => void | (() => void),
199+
dependencies: [T1, T2, T3, T4, T5, T6, T7, T8, T9, T10],
200+
): void;
201+
87202
/**
88203
* Executes a effect and sends to its callback the previous state.
89204
*
@@ -93,10 +208,15 @@ export const useWorker = <TArgs extends readonly any[], TRet>(
93208
* the effect is executed.
94209
* @category Effects
95210
*/
96-
export const useEffectUpdate = <Dependencies extends readonly any[]>(
211+
export function useEffectUpdate<Dependencies extends readonly any[]>(
97212
effect: (oldState: Dependencies) => void | (() => void),
98213
dependencies: Dependencies,
99-
) => {
214+
): void;
215+
216+
export function useEffectUpdate<Dependencies extends readonly any[]>(
217+
effect: (oldState: Dependencies) => void | (() => void),
218+
dependencies: Dependencies,
219+
): void {
100220
const oldState = useRef<Dependencies>([] as any);
101221
useEffect(() => {
102222
try {
@@ -105,7 +225,7 @@ export const useEffectUpdate = <Dependencies extends readonly any[]>(
105225
oldState.current = dependencies;
106226
}
107227
}, dependencies);
108-
};
228+
}
109229

110230
/**
111231
* Conditionally executes an effect.

0 commit comments

Comments
 (0)