如何保护一个属性以唯一标识其他属性

时间:2019-02-15 22:35:28

标签: typescript redux

情况如下:我希望函数可以两种不同的方式调用。该函数的参数类型如下:

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的类型仍显示为州|未定义

我错过了什么吗?还是我的问题有其他解决方案?非常感谢您对此事的帮助。

0 个答案:

没有答案