【发布时间】:2019-12-09 12:48:50
【问题描述】:
我正在学习 Typescript,并按照教程编写了以下代码:
interface Todo {
text: string;
completed: boolean;
}
type State = Array<Todo>;
const TodoReducer = (state: State, action: Actions) => {
switch (action.type) {
case "add":
return console.log("add");
case "remove":
return console.log("remove");
default:
}
};
const Input: React.FC<Props> = ({ name, onChange }) => {
...
const [todos, dispatch] = React.useReducer(TodoReducer, []);
...
};
但与教程不同的是,就我而言,我看到了错误
“never[]”类型的参数不能分配给“never”类型的参数
指向
29 | const [todos, dispatch] = React.useReducer(TodoReducer, []);
【问题讨论】:
-
尝试为状态
const TodoReducer = (state: State = [], action: Actions): State => {分配一个默认值,同时添加一个默认情况:default: return []。目前你的减速器没有返回任何东西,为add和remove的情况分配一些回报 -
好吧,看来已经解决了。我想知道这是否是由于最近的更新,因为我正在关注的教程只有 3 个月大。问题是添加
: State =>。 -
显然
useReducer期望减速器返回一些东西:)
标签: javascript reactjs typescript