// 定义商品信息接口
interface Product {
id: number;
name: string;
price: number;
}
// 定义购物车项接口
interface CartItem {
product: Product;
quantity: number;
}
// 定义购物车状态接口
interface CartState {
items: CartItem[];
}
// 添加商品到购物车函数
function addProductToCart(cart: CartState, product: Product, quantity: number): CartState {
const existingItem = cart.items.find(item => item.product.id === product.id);
if (existingItem) {
existingItem.quantity += quantity;
} else {
cart.items.push({ product, quantity });
}
return cart;
}
// 更新购物车商品数量函数
function updateCartItemQuantity(cart: CartState, productId: number, newQuantity: number): CartState {
const itemIndex = cart.items.findIndex(item => item.product.id === productId);
if (itemIndex!== -1) {
cart.items[itemIndex].quantity = newQuantity;
}
return cart;
}
// 计算购物车总价函数
function calculateCartTotal(cart: CartState): number {
return cart.items.reduce((total, item) => total + item.product.price * item.quantity, 0);
}