Невозможно получить копию массива, возвращает тип «должен иметь метод [Symbol.iterator] ()», который возвращает итератор - PullRequest
0 голосов
/ 21 сентября 2019

Интерфейс:

export interface IClient {
  client_name: string
  client_id?: string
}

Редуктор

export interface ClientState {
    client_name: IClient[]
}

export const clientInitialState: ClientState = {
    client_name: null
}


export const clientReducer = createReducer(
    clientInitialState,
    on(ClientActionTypes.addClientSuccess,(state, {client_name}) => {
      const item = [...client_name]
      return {
        ...state,
        newItem

      }
    }
  ))

С помощью приведенного выше кода я пытаюсь добавить значения внутри массива, такие как ["Item1", "Item2"], но получаюошибка «Тип» должна иметь метод Symbol.iterator, который возвращает итератор.Ошибка возникает в операторе распространения [... client_name].Мне нужна помощь в исправлении этого или любого другого способа добавления.Спасибо

enter image description here

Ответы [ 2 ]

1 голос
/ 22 сентября 2019

Ваш код должен быть

export const clientReducer = createReducer(
    clientInitialState,
    on(ClientActionTypes.addClientSuccess,(state, {client_name}) => {
      return {
        ...state,
        newItem: [...state.client_name, ...client_name]
      }
    }
  ))
1 голос
/ 21 сентября 2019

Это потому, что начальное значение clientInitialState.client_name равно null.
Попытка распространить значение NULL даст вам такую ​​ошибку:

const foo = null;
const bar = [...foo]; // object null is not iterable (cannot read property Symbol(Symbol.iterator))

Вы можете инициализировать переменную с помощью []:

const foo = [];
const bar = [...foo]; // No error!
...