CodeBlanks Logo Icon CodeBlanks

Birleştirme

Tüm parçaları birleştirerek çalışan sepeti yazarsın.

Tüm parçaları birleştir

Sepet projesi üç ana fonksiyondan oluşur: addToCart (ürün ekle), total (toplam hesapla), applyDiscount (indirim uygula). Bir sepeti kullanırken önce ürünleri eklersin, sonra toplamı hesaplar, en son indirim uygularsın.

function addToCart(cart: Cart, product: Product, quantity: number): Cart { /* ... */ }
function total(cart: Cart): number { /* ... */ }
function applyDiscount(amount: number, percent: number): number { /* ... */ }

Çalışan örnek

Bir sepete Elma (fiyat 5, miktar 2) ve Süt (fiyat 10, miktar 1) eklersen toplam 20 olur. %10 indirimle nihai fiyat 18'dir.

const apple: Product = { id: "a", name: "Elma", price: 5 };
const milk: Product = { id: "b", name: "Süt", price: 10 };
const cart: Cart = { items: [] };
addToCart(cart, apple, 2);
addToCart(cart, milk, 1);
const t = total(cart);
const final = applyDiscount(t, 10);
console.log(final);  // 18

Uygulama Çalışan sepeti yaz

Product, CartItem, Cart arayüzlerini tanımla. addToCart, total, applyDiscount fonksiyonlarını yaz. Elma (id: "a", fiyat 5) ve Süt (id: "b", fiyat 10) ürünlerini sepete ekle (Elma'dan 2, Süt'ten 1). Toplamı hesapla, %10 indirim uygula ve nihai fiyatı yazdır.

Başlangıç kodu

index.ts
// Product, CartItem, Cart arayüzlerini tanımla
// addToCart(cart, product, quantity): Cart yaz
// total(cart): number yaz
// applyDiscount(amount, percent): number yaz
// Elma (id: a, fiyat 5) ve Süt (id: b, fiyat 10) ekle
// toplamı hesapla, %10 indirim uygula, sonucu yazdır

Örnek çözüm

index.ts
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;
}

function total(cart: Cart): number {
  return cart.items.reduce((sum, i) => sum + i.product.price * i.quantity, 0);
}

function applyDiscount(amount: number, percent: number): number {
  return amount * (1 - percent / 100);
}

const apple: Product = { id: "a", name: "Elma", price: 5 };
const milk: Product = { id: "b", name: "Süt", price: 10 };

const cart: Cart = { items: [] };
addToCart(cart, apple, 2);
addToCart(cart, milk, 1);

const cartTotal = total(cart);
const finalPrice = applyDiscount(cartTotal, 10);
console.log(finalPrice);

Beklenen çıktı

18

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Bir sepetin nihai fiyatı hangi sıra ile hesaplanır?

  • Önce ekle, sonra toplam, sonra indirim Doğru cevap
  • Önce indirim, sonra ekle, sonra toplam
  • Önce toplam, sonra ekle, sonra indirim
  • Önce ekle, sonra indirim, sonra toplam

Açıklama: Sepete ürün eklersin, sonra tüm öğelerin toplamını hesaplarsın, en son indirim uygulayarak nihai fiyatı bulursun.

2 Nihai adımı tamamla

Soru
const finalPrice = ____(cartTotal, 10);
Cevap
const finalPrice = applyDiscount(cartTotal, 10);

Açıklama: Nihai fiyat, toplama yüzde indirim uygulamakla bulunur; bu yüzden applyDiscount çağrılır. total ve addToCart yanlış adım, console.log sadece yazdırır.

3 Birleştirme akışı

Kavram Anlamı
addToCart İlk adım: ekle
total İkinci adım: topla
applyDiscount Üçüncü adım: indirim
finalPrice Sonuç

Başlangıç bölümündeki tüm dersler