Skip to content

Commit 1ba1bd9

Browse files
committed
Improve typings to infer initialProps type
1 parent bbfb0ff commit 1ba1bd9

File tree

2 files changed

+8
-13
lines changed

2 files changed

+8
-13
lines changed

index.d.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
import { cleanup, act, RenderOptions, RenderResult } from 'react-testing-library'
22

3-
export function renderHook<T extends (...args: any[]) => any>(
4-
callback: T,
3+
export function renderHook<P extends any, T extends (...args: [P]) => any>(
4+
callback: (_: P) => ReturnType<T>,
55
options?: {
6-
initialProps?: Parameters<T>[0]
6+
initialProps?: P
77
options?: RenderOptions
88
}
99
): {
1010
readonly result: {
1111
current: ReturnType<T>
1212
}
1313
readonly unmount: RenderResult['unmount']
14-
readonly rerender: (hookProps?: Parameters<T>[0]) => void
14+
readonly rerender: (hookProps?: P) => void
1515
}
1616

1717
export const testHook: typeof renderHook

test/typescript/renderHook.ts

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,6 @@ const useTheme = (initialTheme: InitialTheme = DARK) => {
2222
return useMemo(() => ({ ...themes[theme], toggleTheme }), [theme])
2323
}
2424

25-
type InitialProps = { initialTheme: InitialTheme }
26-
2725
function checkTypesWithNoInitialProps() {
2826
const { result, unmount, rerender } = renderHook(() => useTheme())
2927

@@ -40,12 +38,9 @@ function checkTypesWithNoInitialProps() {
4038
}
4139

4240
function checkTypesWithInitialProps() {
43-
const { result, unmount, rerender } = renderHook(
44-
({ initialTheme }: InitialProps) => useTheme(initialTheme),
45-
{
46-
initialProps: { initialTheme: DARK }
47-
}
48-
)
41+
const { result, unmount, rerender } = renderHook(({ theme }) => useTheme(theme), {
42+
initialProps: { theme: DARK }
43+
})
4944

5045
// check types
5146
const _result: {
@@ -56,5 +51,5 @@ function checkTypesWithInitialProps() {
5651
}
5752
} = result
5853
const _unmount: () => boolean = unmount
59-
const _rerender: (_: InitialProps) => void = rerender
54+
const _rerender: (_?: { theme: typeof DARK }) => void = rerender
6055
}

0 commit comments

Comments
 (0)