В приложении «Реакция / Избыток» я использую handleActions
в своих редукторах. Код в редукторе выглядит так:
export const servicesReducer = handleActions<RootState.ServicesState, string>({
[ServiceActions.Type.FILTER_SERVICE_SEARCH]: (state, action) => {
if (action.payload) {
const payload: string = action.payload;
const filteredServices = state.all.filter((s: ServiceModel) => s.text.startsWith(payload));
return {...state, filtered: filteredServices};
}
return {...state, filtered: state.all};
}
},
initialState);
У меня проблема в том, что тип payload
в действии является необязательным (string | undefined
). Поэтому я должен добавить проверку if
. Интересно, как я могу сделать так, чтобы он никогда не был undefined
?
Ниже приведен код действий. Нужно ли вносить какие-либо изменения в функции действий? Как я могу это сделать, если это необходимо?
import { createAction } from 'redux-actions';
export namespace ServiceActions {
export enum Type {
FILTER_SERVICE_SEARCH = 'FILTER_SERVICE_SEARCH',
};
export const filterService = createAction(Type.FILTER_SERVICE_SEARCH);
};
export type ServiceActions = Omit<typeof ServiceActions, 'Type'>;
Как добавить тип в полезную нагрузку, чтобы он не был undefined
? Например, когда я объявляю переменную как const a:string = ""
, a
не может быть undefined
. Могу ли я сделать аналогичную вещь для полезной нагрузки?