允许部分类型

时间:2017-09-29 14:04:51

标签: redux flowtype

将Flowtype与Redux一起使用,我的类型如下:

export type MapState = {
  addresses: Address[],
  selected: Array<number>
}

和行动创作者:

export const setParams = (params: any): Action => {
    return { type: actionTypes.SET_PARAMS, payload: { params };

}

在reducer中,我将params合并到状态:

export default (state: MapState = initialState, action: SetParamsAction) => {
  switch (action.type) {
    case actionTypes.SET_PARAMS: {
      return {
         ...state,
         ...action.payload.params
      }
 [...]

我正在寻找告诉Flowtype在动作创建者中接受params的可能性,如果它是仅包含MapState属性的对象,那么我可以摆脱any中的setParams。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您可以像这样添加exact PossibleParams Object type

type PossibleParams = {|
  addresses?: Address[],
  selected?: number[],
|};

export const setParams = (params: PossibleParams): Action => ({
  type: actionTypes.SET_PARAMS,
  payload: {
    params,
  },
});

您可以在flow.org/try

上查看所有可能性