现在我正在努力输入我createAction
从redux-actions
库中使用的减速器的第二个参数 action。
我的部分reducer代码如下
type AddItems = 'addItems';
const AddItems: AddItems = 'addItems';
interface AddItemAction extends Action<CartItem> {
type: AddItems;
}
export const addItems = createAction<CartItem>(AddItems);
type RemoveItem = 'removeItem';
const RemoveItem: RemoveItem = 'removeItem';
interface RemoveItemAction extends Action<number> {
type: RemoveItem;
}
export const removeItem = createAction<number>(RemoveItem);
export type ShoppingCartActions = AddItemAction | RemoveItemAction;
export const shoppingCartActions = {
addItems,
removeItem
};
export default function shoppingCartReducer(state: ShoppingCartStore = shoppingCartInitialState, action: ShoppingCartActions) {
const { type, payload } = action;
switch (type) {
case AddItems:
return {
cartItems: [
...state.cartItems.filter(cartItem => cartItem.item.id !== payload!.item.id),
payload
]
};
case RemoveItem:
return {
cartItems: [
...state.cartItems.filter(cartItem => cartItem.item.id !== payload)
]
};
default:
return state;
}
}
我遇到的问题是,当我payload
在减速器中访问属性时,它认为每个案例都必须存在该属性。例如,在addItems
我访问payload.item
但打字稿抱怨的情况下,因为它还寻找item
来自RemoveItemAction
.