打字稿错误-必须具有返回迭代器的'[Symbol.iterator]()'方法

时间:2020-01-10 06:20:36

标签: angular typescript

我遇到错误:

错误TS2488:类型“ Usuario”必须具有“ Symbol.iterator”方法 返回迭代器。

我的代码:

usuarios.reducers.ts

export interface UsuarioState {
    users: Usuario[];
    loaded: boolean;
    loading: boolean;
    error: any;
}

const initState: UsuarioState = {
    users: [],
    loaded: false,
    loading: false,
    error: null
}

export function usuariosReducer(state = initState, action: fromUsuariosActions.usuariosAcciones): UsuarioState {

    switch (action.type) {

        case fromUsuariosActions.CARGAR_USUARIOS: 
            return {
                ...state,
                loading: true
            }

        case fromUsuariosActions.CARGAR_USUARIOS_SUCCESS:
            return {
                ...state,
                loading: false,
                loaded: true,
                users:[...action.usuarios]
            }

屏幕截图:enter image description here

我在tsconfig.json文件中添加了“ es5”,“ dom.iterable”,但仍然无法正常工作,您能解释一下这是怎么回事吗?

usuarios.actions.ts

import { Action } from '@ngrx/store';
import { Usuario } from '../../models/usuario.model';

export const CARGAR_USUARIOS = 'CARGAR_USUARIO'
export const CARGAR_USUARIOS_FAIL = 'CARGAR_USUARIO_FAIL'
export const CARGAR_USUARIOS_SUCCESS = 'CARGAR_USUARIO_SUCCESS'

export class CargarUsuarios implements Action {
    readonly type = CARGAR_USUARIOS;
}

export class CargarUsuariosFail implements Action {
    readonly type = CARGAR_USUARIOS_FAIL;

    constructor(public payload: any) {}
}

export class CargarUsuariosSuccess implements Action {
    readonly type = CARGAR_USUARIOS_SUCCESS;

    constructor(public usuarios: Usuario) {}
}

export type usuariosAcciones = CargarUsuarios |
                               CargarUsuariosFail |
                               CargarUsuariosSuccess

usuario.model.ts

export class Usuario {
    constructor(public id: number, 
                public first_name: string, 
                public last: string,
                public avatar: string, ){

    }
}

1 个答案:

答案 0 :(得分:1)

action.usuarioObjectArray运算符的规范中未定义将对象扩展为spread的情况。此外,users属性需要一个Usuario对象的数组。因此,首先,您需要将对象spread放入另一个object,然后将其作为元素添加到数组中。

...
    case fromUsuariosActions.CARGAR_USUARIOS_SUCCESS:
        return {
            ...state,
            loading: false,
            loaded: true,
            users:[{...action.usuarios}]
        }
...