Как запушить объект в массив в массиве в стейте?

Ниже размещу типизацию для стейта 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[]. Пустой массив тоже подойдет под этот тип.

→ Ссылка