Функция CombineReducers с машинописным текстом - PullRequest
0 голосов
/ 06 мая 2020

Я пытаюсь использовать контекстный API, а не сокращение, поэтому я сталкиваюсь с этой проблемой при попытке объединить редукторы вместе. Вот код:

const mainReducer = (state: InitialStateType, action: AppMenuActions | AuthActions | LayoutActions) => ({
    appMenu: AppMenuReducer(state.appMenu, action),
    auth: AuthReducer(state.auth, action),
    layout: LayoutReducer(state.layout, action),
});

он отлично работает, если нет типа, но я использую сценарии, поэтому каждый из моих редукторов принимает тип действия в соответствии с этим редуктором либо AppMenuActions, либо AuthActions, либо LayoutActions. Поскольку во время использования я не знаю, какое действие я буду передавать, поэтому я должен использовать объединение | для аргумента действия mainReducer. Когда я передаю это действие каждому из редюсеров, машинописный текст жалуется, потому что, например, действие AppMenuReducer выполняется только в типе AppMenuActions, но передается в AppMenuActions | AuthActions | LayoutActions. Я застрял, не знаю, как это решить. Спасибо, что помогли мне!

1 Ответ

0 голосов
/ 06 мая 2020

Итак, после прочтения документации машинописного текста оказалось, что это можно сделать с помощью утверждения типа, и в этом случае я бы использовал:

const mainReducer = (state: InitialStateType, action: AppMenuActions | AuthActions | LayoutActions) => ({
    appMenu: AppMenuReducer(state.appMenu, action as AppMenuActions),
    auth: AuthReducer(state.auth, action as AuthActions),
    layout: LayoutReducer(state.layout, action as LayoutActions),
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...