Проблема типа с NgRx, которую нельзя назначить типу State - PullRequest
0 голосов
/ 28 марта 2020

У меня проблема с типом, которая выдает следующую ошибку. Я пытался изменить тип, но все равно он не работал.

У меня есть начальное состояние, которое имеет три различных типы.

todo.reducer принадлежит компоненту Todo, и я объявил главный редуктор для всего приложения.

Ошибка :

Тип ' {ошибка: строка; элементы: TodoList []; загрузка: логическое значение; } 'нельзя назначить типу' State '. Типы свойства 'error' несовместимы. Тип 'string' не может быть назначен типу 'Error'.

**todo.reducer.ts:**

export interface State{
    items:TodoList[],
    loading:boolean,
    error:Error
}

const initialState:State={
    items:[
        new TodoList(1,'cook'),
        new TodoList(2,'work')
    ],
    loading:false,
    error:undefined

}

export function TodoItem(state=initialState,action:TodoActions.TodoActions){

    switch(action.type){

        case TodoActions.ADD_ITEM:
            return {
                ...state,
                loading:true

            }
        case TodoActions.DELETE_ITEM:
            return {
                ...state,
                loading:true
            }
        case TodoActions.LOADING_LIST:
            return{
                ...state,
                loading:true
            }
        case TodoActions.LOADING_LIST_SUCCESS:
            return{
                ...state,
                loading:false
            }
        case TodoActions.LOADING_LIST_FAIL:
            return {
                ...state,
                loading:false
            }
        case TodoActions.ADD_ITEM_SUCCESS:
            return{
                ...state,
                items:[...state.items,action.payload],
                loading:false
            }
        case TodoActions.ADD_ITEM_FAILURE:
            return{
                ...state,
                error:action.payload
            }
        case TodoActions.DELETE_ITEM_SUCCESS:
            return{
                ...state,
                items:state.items.filter((items)=>{
                    return items.id!==action.payload
                }),
                loading:false

            }
        case TodoActions.DELETE_ITEM_FAILURE:
            return{
                ...state,
                error:action.payload,
                loading:false
            }
        default:
            return state;

    }



**app.reducer.ts:**

export interface AppState{

    list:fromTodoReducer.State

}

export const appReducer:ActionReducerMap<AppState>={
    list:fromTodoReducer.TodoItem
}
...