我一直在阅读有关将 Redux 与 Typescript 结合使用的文档,我认为我一切都正确,但无论如何我的编译器都会抱怨。
这是有问题的行:
// Widget.tsx
const error = useTypedSelector(state => state.error.widgetError)
// ^
// Object is of type 'unknown'. TS2571
Run Code Online (Sandbox Code Playgroud)
useTypedSelector
是文档自定义挂钩推荐的,因此您不必state
像RootState
使用选择器时那样进行类型转换。
// store.ts
export type RootState = ReturnType<typeof store.getState>
Run Code Online (Sandbox Code Playgroud)
// hooks.ts
import { TypedUseSelectorHook, useSelector } from 'react-redux'
import { RootState } from './store'
export const useTypedSelector: TypedUseSelectorHook<RootState> = useSelector
Run Code Online (Sandbox Code Playgroud)
我不明白问题是什么。我的整个状态树都已键入,state
回调中的参数也是如此。将鼠标悬停在 VS Code 中的对象上可以确认这一点。
我尝试了各种类型转换来解决它,但仍然遇到相同的错误。
const error = useSelector((state: RootState) => state.error.widgetError) // no
const error = useSelector<RootState, string | …
Run Code Online (Sandbox Code Playgroud)