и у некоторых его вообще нет. или тут лучше задать type IAction = { type: ActionType }; и для всех остальных экшенов написать свои типы, расширяющие этот?
interface IAction {
type: ActionType;
payload?: any;
}
/*type IAction = {
type: ActionType;
};*/
enum ActionType {
LoadDataInit = 'LoadDataInit',
LoadDataSuccess = 'LoadDataSuccess',
LoadDataError = 'LoadDataError',
UpdateData = 'UpdateData',
ToggleModal = 'ToggleModal',
GoBack = 'GoBack',
GoBackWithConfirmation = 'GoBackWithConfirmation',
SetIsLoading = 'SetIsLoading',
SaveSuccessWithExit = 'SaveSuccessWithExit',
SaveSuccessWithRedirect = 'SaveSuccessWithRedirect',
SaveSuccess = 'SaveSuccess',
}
const initialData: IOperationPlan = {
id: '',
};
const reducer: React.Reducer<IState, IAction> = (state, action) => {
const { data, value, isLoading, redirectId } = action.payload;
switch (action.type) {
case ActionType.LoadDataInit:
В доке же всё есть: https://redux.js.org/recipes/usage-with-typescript/
Для таких вещей можно использовать typesafe-actions или typescript-fsa
Обсуждают сегодня