Как запушить объект в массив в массиве в стейте?
Ниже размещу типизацию для стейта Redux:
export type TodoItem = {
id: string;
title: string;
order: number;
content: string;
isCompleted: boolean;
};
export type Boards = {
title: string;
id: string;
order: number;
items: TodoItem[] | [];
};
export type State = {
boards: Boards[];
settings?: any;
};
Я пытаюсь в слайсе запушить в массив items: TodoItem[] объект вот этой функцией:
createTodo: (
state,
action: PayloadAction<[boardId: string, title: string, content: string]>,
) => {
const findBoardIdx = (): number => {
return state.boards.findIndex((board) => board.id === action.payload[0]);
}; // Ищу борду для пуша туду.
state.boards[findBoardIdx()].items.push({}); // Пушу здесь *условно* типизированный объект.
// Но получаю данную ошибку: Argument of type 'number' is not assignable to parameter of type 'never'.
},
То есть, почему то, js теряется на этапе когда я ищу в массиве boards объект по id и push заместо ожидаемой логики, а-ля:

Ответы (1 шт):
Автор решения: Алексей
→ Ссылка
Проблема в том, что вы немного неверно типизировали Boards, поэтому TS не может понять какого типа у вас items. Поле items должно быть типизировано как TodoItem[]. Пустой массив тоже подойдет под этот тип.
