面试题答案
一键面试// 使用复合类型定义购物车中商品的类型
type CartItem = {
productId: number;
productName: string;
price: number;
stock: number;
isOnSale: boolean;
};
// 计算购物车中所有商品的总价
function calculateTotal(cartItems: CartItem[]): number {
return cartItems.reduce((total, item) => {
const itemPrice = item.isOnSale? item.price * 0.8 : item.price;
return total + itemPrice;
}, 0);
}
// 示例使用
const cart: CartItem[] = [
{ productId: 1, productName: '商品1', price: 100, stock: 5, isOnSale: true },
{ productId: 2, productName: '商品2', price: 200, stock: 3, isOnSale: false }
];
const total = calculateTotal(cart);
console.log(`购物车总价: ${total}`);
在上述代码中:
- 基本类型:
number
用于表示商品ID、价格、库存数量;string
用于表示商品名称;boolean
用于表示是否促销。这些基本类型是构建复合类型的基础。 - 复合类型:通过
type
关键字定义了CartItem
类型,它是一个包含多个基本类型属性的对象类型,属于复合类型。函数calculateTotal
的参数使用了CartItem
这种复合类型来表示购物车商品列表,在函数内部对每个CartItem
对象中的基本类型属性(如price
、isOnSale
)进行操作,体现了基本类型和复合类型的协同工作。