情况如下:我希望函数可以两种不同的方式调用。该函数的参数类型如下:
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>;
});
我对此不理解,我可以传入 State 类型的initialState,也可以传入 Action 类型的initialAction,或者传入类型为 undefined 的initialState,但随后还需要传入类型为 Action 的initialAction。
我试图通过类似于
的构造获得真实的初始状态const realState = initialAction === undefined
? initialState
: reducer(initialState, initialAction)
但即使initialState的类型为 undefined ,即使initialState 的类型必须为 State ,但realState的类型仍显示为州|未定义。
我错过了什么吗?还是我的问题有其他解决方案?非常感谢您对此事的帮助。