Сообщение об ошибке редуктора NGRX8: тип 'number' не может быть назначен типу 'ListItem[]'

Я пытаюсь настроить NGRX для обновления массива элементов списка.

Это мой редуктор:

export const initialState: Array<ListItem> = [
  {name: 'list item', quantity: 1}
  ];

// tslint:disable-next-line:variable-name
const _listReducer = createReducer(
  initialState,
  on(add, (state, {name, quantity}) => (state.push({name: name, quantity: quantity})))
);

export function listReducer(state: ListItem[] | undefined, action: Action) {
  return _listReducer(state, action);
}

И связанное с ним действие

export const add = createAction(
  '[List Component] Add',
  props<{name: string; quantity: number}>()
  );

Мой вопрос в том, как правильно вставить новую запись в массив состояний из редуктора? в настоящее время я получаю эту ошибку

ERROR in src/app/reducers/list.reducer.ts(12,40): error TS2322: Type 'number' is not assignable to type 'ListItem[]'.

1 ответ

Оператор 'on' должен был выглядеть так

  on(add, (state, {name, quantity}) => ([...state, {name, quantity}]))
Другие вопросы по тегам