首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >必须具有返回迭代器的“[Symbol.iterator]()”方法

必须具有返回迭代器的“[Symbol.iterator]()”方法
EN

Stack Overflow用户
提问于 2020-01-10 14:20:37
回答 1查看 5.6K关注 0票数 3

我遇到了这个错误:

代码语言:javascript
运行
复制
error TS2488: Type 'Usuario' must have a '[Symbol.iterator]()' method
that returns an iterator.

我的代码:

usuarios.reducers.ts

代码语言:javascript
运行
复制
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]
            }

截图:

我已经在我的tsconfig.json文件中添加了"es5", "dom.iterable",但是仍然不能工作,你能给我解释一下出了什么问题吗?

usuarios.actions.ts

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
export class Usuario {
    constructor(
        public id: number, 
        public first_name: string, 
        public last: string,
        public avatar: string,
    ) {
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-10 14:50:15

action.usuarioObject,并且在Array运算符的规范中没有定义将对象扩展到spread中。此外,users属性需要一个Usuario对象数组。因此,首先需要将对象spread到另一个object中,然后将其作为元素添加到数组中。

代码语言:javascript
运行
复制
...
    case fromUsuariosActions.CARGAR_USUARIOS_SUCCESS:
        return {
            ...state,
            loading: false,
            loaded: true,
            users:[{...action.usuarios}]
        }
...
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59676430

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档