我在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。
答案 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
。