Параметр 'action' должен иметь тип, назначаемый для 'Object' при попытке заставить Redux работать с Typescript - PullRequest
0 голосов
/ 05 марта 2019

Я сейчас пытаюсь сделать так, чтобы в моем приложении Typescript работала избыточность, на самом деле оно работает, но в машинописи, похоже, есть некоторые проблемы с печатанием.

Вот что получается:

enter image description here

А это мой код редуктора:

import { PopUpNotification } from "definitions/PopUpNotificationDefinitions";

interface IPopUpNotificationReducerState {
    popUpNotifications: Array<PopUpNotification>;
}

const initialState: IPopUpNotificationReducerState = {
    popUpNotifications: []
}

enum PopUpNotificationActions {
    ADD = "POPUPNOTIFICATION_ADD",
    DELETE = "POPUPNOTIFICATION_DELETE"
}

export interface AddPopUpNotification {
    type: PopUpNotificationActions,
    popUpNotification: PopUpNotification,
}

export interface DeletePopUpNotification {
    type: PopUpNotificationActions,
    popUpNotification: PopUpNotification,
}

export type PopUpNotificationAction = AddPopUpNotification | DeletePopUpNotification;

export function addPopUpNotification(popUpNotification: PopUpNotification): AddPopUpNotification {
    const addPopUpNotification: DeletePopUpNotification = {
        type: PopUpNotificationActions.ADD,
        popUpNotification: popUpNotification
    };

    return addPopUpNotification;
}

export function deletePopUpNotification(popUpNotification: PopUpNotification): DeletePopUpNotification {
    const deletePopUpNotification: DeletePopUpNotification = {
        type: PopUpNotificationActions.DELETE,
        popUpNotification: popUpNotification
    };

    return deletePopUpNotification;
}

export function popUpNotificationReducer(state = initialState, action: PopUpNotificationAction): IPopUpNotificationReducerState {

    switch (action.type) {
        case PopUpNotificationActions.ADD:
        return {
            popUpNotifications: [...state.popUpNotifications, action.popUpNotification]
        };
        case PopUpNotificationActions.DELETE:
        return {
            popUpNotifications: state.popUpNotifications.filter(notification => notification.Id !== action.popUpNotification.Id)
        }
    default:
        return initialState;
    }
}

Я постарался как можно лучше следовать руководству на редукционной странице с небольшими изменениями в моем случае.

Итак, есть ли намеки на то, где я сейчас ошибаюсь?

1 Ответ

0 голосов
/ 07 марта 2019

Вы можете посмотреть на рабочий пример простого приложения, которое поставляется с Visual Studio 2017 Community Edition. Пример основан на TypeScript, Redux и React. Так что у вас будут примеры действий, редуктора и т. Д.

Для развертывания примера используйте сообщество Visual Studio 2017 -> Новый проект -> Visual C # -> .NET Core -> ASP.NET Core Web App -> В верхнем меню выберите .NET Core 2.0 (это важно, так как .NET Базовые шаблоны 2.1+ основаны на JavaScript) -> React.js и Redux -> и у вас будет полностью работающее приложение для машинописи с React и Redux

...