TL;DR 有谁有任何例子, useAnimatedGestureHandler 的正确泛型是什么?
问题:
我正在关注Reanimated 2 手势动画教程。有这样一个例子:
//...
const onGestureEvent =
useAnimatedGestureHandler({
onStart: (_, ctx) => {
ctx.offsetX = translateX.value
},
//...
})
//...
Run Code Online (Sandbox Code Playgroud)
我使用打字稿,当我复制打字稿中的示例时,我得到ctx
参数(上下文)类型错误:
Property 'offset' does not exist on type '{}'.
在 onStart 声明中进行一些窥探后,我发现 GestureHandlers 的完整类型需要一个泛型<T, TContext extends Context>
:
//...
export interface GestureHandlers<T, TContext extends Context> {
onStart?: Handler<T, TContext>;
//...
}
Run Code Online (Sandbox Code Playgroud)
解决方法:
我可以通过简单地传递一个实用程序类型记录(这几乎与说“任何”相同)来解决这个问题,我不喜欢这样。
const onGestureEvent = useAnimatedGestureHandler<
GestureEvent<PanGestureHandlerEventPayload>,
Record<string, unknown>
>({
onStart: (_, ctx) => {
ctx.offsetX = translateX.value;
}, …
Run Code Online (Sandbox Code Playgroud) generics typescript react-native react-native-reanimated react-native-gesture-handler