【发布时间】:2021-06-30 00:41:04
【问题描述】:
我正在构建一个练习表格,并使用useReducer() 来管理状态。我得到的 Typescript 错误与它有关,我已经尝试解决它但没有运气。
完整代码可在此处获得(路径:src/components/Input.tsx): CodeSandbox
完全错误:
/form/src/components/Input.tsx(47,47) 中的 TypeScript 错误: 没有重载匹配此调用。 Overload 1 of 5, '(reducer: ReducerWithoutAction, initializerArg: any, initializer?: undefined): [any, DispatchWithoutAction]',给出以下错误。 '(state: InputState, action: InputAction) => { value: string | 类型的参数不明确的; isValid: 布尔值 |不明确的;触摸:布尔值; }' 不可分配给“ReducerWithoutAction”类型的参数。 TS2769
45 | const Input: React.FC<Props> = (props) => {
46 | console.log(props.required);
47 | const [inputState, dispatch] = useReducer(inputReducer, {
|
48 | value: props.initialValue,
49 | isValid: false,
50 | touched: false
【问题讨论】:
-
您必须将显式类型参数传递给
useReducer,编译器无法推断出正确的类型。 google.com/… -
是的,我已经构建了一个接口并将其附加到 inputReducer 函数: const inputReducer = (state: InputState, action: InputAction) =>... 根据我读过的内容,我没有需要在下面添加任何东西: const [inputState, dispatch] = useReducer(inputReducer...
标签: javascript reactjs typescript