Ситуация следующая: я хочу, чтобы функция вызывалась двумя разными способами.Тип аргумента функции выглядит следующим образом:
type Argument<State, Action> = {
reducer: (
state: Exclude<State, undefined> | undefined,
action: Exclude(Action, undefined),
) => Exclude<State, undefined>;
} & (
| {
initialState: Exclude<State, undefined>;
initialAction?: Exclude<Action, undefined>;
}
| {
initialState: undefined;
initialAction: Exclude<Action, undefined>;
});
Я понимаю из этого, что могу передать в initialState типа State и, опционально, initialAction типа Action или Я могу передать в initialState типа undefined , но затем необходимо передать в initialAction типа Действие .
Я пытаюсь получить реальное начальное состояние с помощью конструкции, аналогичной
const realState = initialAction === undefined
? initialState
: reducer(initialState, initialAction)
, но даже если initialState должен иметь тип State , если initialAction имеет тип undefined , тип realState по-прежнему отображается как State |undefined .
Я что-то упустил или есть другое решение моей проблемы?Я был бы очень благодарен за любую помощь в этом вопросе.