Skip to content

Commit 191a1a1

Browse files
committed
fix: types break when function is used with hooks
1 parent 03bd9c9 commit 191a1a1

File tree

2 files changed

+12
-4
lines changed

2 files changed

+12
-4
lines changed

demo/src/sandboxes/svg-filter/src/App.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@ const AnimFeDisplacementMap = animated('feDisplacementMap')
88

99
export default function App() {
1010
const [open, toggle] = useState(false)
11-
const { freq, factor, scale, opacity } = useSpring({
11+
const [{ freq, factor, scale, opacity }] = useSpring(() => ({
1212
reverse: open,
1313
from: { factor: 10, opacity: 0, scale: 0.9, freq: '0.0175, 0.0' },
1414
to: { factor: 150, opacity: 1, scale: 1, freq: '0.0, 0.0' },
1515
config: { duration: 3000 },
16-
})
16+
}))
1717

1818
return (
1919
<div className={styles.container} onClick={() => toggle(!open)}>

packages/core/src/types/props.ts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -352,13 +352,21 @@ export type PickAnimated<Props extends object, Fwd = true> = unknown &
352352
: [object] extends [Props]
353353
? Lookup
354354
: ObjectFromUnion<
355-
Props extends { from: infer From extends object ? object : () => any } // extract prop from the `from` prop if it exists
356-
? ObjectType<From>
355+
Props extends { from: infer From } // extract prop from the `from` prop if it exists
356+
? From extends () => any
357+
? ReturnType<From>
358+
: ObjectType<From>
357359
: TransitionKey & keyof Props extends never
358360
? ToValues<Props, Fwd>
359361
: TransitionValues<Props>
360362
>)
361363

364+
export type NonUndefined<A> = A extends undefined ? never : A
365+
366+
export type FunctionKeys<T extends object> = {
367+
[K in keyof T]-?: NonUndefined<T[K]> extends Function ? K : never
368+
}[keyof T]
369+
362370
/**
363371
* Pick the values of the `to` prop. Forward props are *not* included.
364372
*/

0 commit comments

Comments
 (0)