【发布时间】:2021-06-02 18:00:32
【问题描述】:
我正在尝试了解如何正确键入减速器的初始状态。我有的是。
interface TodosState {
high: ITodo[];
medium: ITodo[];
low: ITodo[];
}
const INITIAL_STATE: TodosState = {
high: [],
medium: [],
low: [],
};
const addTodo = (state: TodosState, payload: ITodo) => {
const { description, id, priority } = payload;
const updatedState = { ...state };
state[priority].push();
return updatedState;
};
这样我就不能访问 state[priority] 因为我得到这个错误:
在“TodosState”类型上找不到带有“string”类型参数的索引签名。
我试过了。
interface TodosState extends Record<string, any> {
high: ITodo[];
medium: ITodo[];
low: ITodo[];
}
有了这个我可以推送新的值,但是我不能自动完成数组方法,所以我认为这是不对的。
interface TodosState {
[key: string]: ITodo[]
}
这也可以,但我在尝试访问“state.high”时无法自动完成。
那么正确的方法是什么?提前致谢。
【问题讨论】:
标签: reactjs typescript redux react-redux