为什么在redux-starter-kit的PayloadAction中“ boolean”变成“ false&true”?

时间:2019-07-24 07:20:53

标签: typescript redux

我在React项目中使用redux-starter-kit。我试图在createSlice方法中描述化简器中的有效负载类型。

我有两个减速器:

setFetchingMenuItems: (
  state: IPagesState,
  { payload }: PayloadAction<boolean>
) => {
  state.isFetchingMenuItems = payload;
},
setMenuItems: (
  state: IPagesState,
  { payload }: PayloadAction<IMenuItemViewModel[]>
) => {
  state.menuItems = payload;
},

第二个按预期方式工作。如果我尝试调度setMenuItems操作,则它仅接受IMenuItemViewModel的数组。

但是,如果我尝试分派有效载荷为true或false的setFetchingMenuItems操作,TypeScript会向我显示错误:“ TS2345:类型为“ false”的参数不能分配给类型为“ false&true”的参数。”

我想念什么?

更新:

这是我分配操作的异步方法:

export const fetchMenuItems = () => async (
  dispatch: Dispatch
): Promise<void> => {
  dispatch(setFetchingMenuItems(true));

  try {
    const { value } = await PageService.getMenuItems();

    dispatch(setMenuItems(value));
  } catch (e) {
    console.log(e);
  }

  dispatch(setFetchingMenuItems(false));
};

TypeScript版本为3.5.1。

2 个答案:

答案 0 :(得分:2)

问题出在redux-starter-kit(我的版本是0.5.1)中。版本0.6.0对其进行了修复。所以我更新到0.6.2,现在可以了。

答案 1 :(得分:0)

使用Typescript扩展到true | false似乎是active issue。似乎奇怪的是它已扩展为false & true而不是false | true

要解决您的问题,您可以尝试将boolean替换为false | true