TypeScript
Ürün ekleme
Ürün eklemeyi ve miktar güncellemeyi öğrenirsin.
Ürün ekleme mantığı
addToCart fonksiyonu, sepete ürün ekler. Önce ürünün sepette olup olmadığını find ile kontrol eder; varsa miktarını artırır, yoksa yeni öğe ekler. Bu, aynı üründen birden çok kez eklendiğinde tekrar tekrar öğe oluşturmaz.
function addToCart(cart: Cart, product: Product, quantity: number): Cart {
const existing = cart.items.find(i => i.product.id === product.id);
if (existing) {
existing.quantity += quantity;
} else {
cart.items.push({ product, quantity });
}
return cart;
}
Miktar güncelleme
Mevcut öğeyi bulduğunda miktarını güncellersin. += operatörü kısa yoldur; aynı anlamda existing.quantity = existing.quantity + quantity de yazabilirsin. Her iki yol da geçerlidir.
existing.quantity += quantity;
// eşittir: existing.quantity = existing.quantity + quantity;
Yeni öğe eklerken cart.items.push({ product, quantity }) kullanırsın.
Uygulama addToCart fonksiyonu yaz
Product, CartItem, Cart arayüzlerini tanımla. addToCart(cart: Cart, product: Product, quantity: number): Cart fonksiyonu yaz: ürün sepette varsa miktarını artır, yoksa cart.items.push ile yeni öğe ekle. Aynı ürünü iki kez ekle ve son miktarı yazdır.
Örnek çözümü göster
interface Product { id: string; name: string; price: number; }
interface CartItem { product: Product; quantity: number; }
interface Cart { items: CartItem[]; }
function addToCart(cart: Cart, product: Product, quantity: number): Cart {
const existing = cart.items.find(i => i.product.id === product.id);
if (existing) {
existing.quantity += quantity;
return cart;
}
cart.items.push({ product, quantity });
return cart;
}
const cart: Cart = { items: [] };
const apple: Product = { id: "a1", name: "Elma", price: 5 };
addToCart(cart, apple, 2);
addToCart(cart, apple, 3);
console.log(cart.items[0].quantity);
Kendini test et
-
Sepette aynı üründen zaten varsa ne yapmalısın?
- Ürünü ikinci kez ekle
- Eski öğeyi sil
- Hata fırlat
- Miktarı artır
Cevabı göster
Miktarı artır — Aynı üründen sepette varsa, yeni öğe eklemek yerine mevcut öğenin miktarını artırmalısın. Bu, tekrarları önler.
-
find koşulunu tamamla
const existing = cart.items.find(i => i.product.id === ____);
Cevabı göster
const existing = cart.items.find(i => i.product.id === product.id);
-
Ürün ekleme parçaları
- cart.items.find(...)
- Mevcut öğeyi bul
- existing.quantity += quantity
- Miktarı artır
- cart.items.push(...)
- Yeni öğe ekle
- addToCart
- Sepete ürün ekler
Sıradaki ders: Toplam hesaplama