Menu
Coddy logo textTech

Fonksiyon: Envantere Öğe Ekle

Coddy'nin JavaScript Journey'sinin TypeScript'e Giriş bölümünün bir parçası — ders 64 / 73.

challenge icon

Görev

Kolay

Önceki meydan okumadan size aşağıdakiler sağlanmıştır:

  • id, quantity ve details özelliklerine sahip genel (generic) arayüz InventoryItem<T>
  • Üç envanter öğesi: bookItem, electronicItem ve clothingItem

Mevcut bir envanter dizisine yeni bir öğe ekleyen addItem adında genel (generic) bir fonksiyon oluşturun.

Fonksiyon şunları yapmalıdır:

  • Genel bir tip parametresi olan T kullanmalıdır
  • InventoryItem<T>[] tipinde bir inventory parametresi kabul etmelidir
  • InventoryItem<T> tipinde bir newItem parametresi kabul etmelidir
  • Mevcut tüm öğeleri ve yeni öğeyi içeren InventoryItem<T>[] tipinde yeni bir dizi döndürmelidir
  • Açık bir dönüş tipi belirtecine (return type annotation) sahip olmalıdır

Aşağıdaki dizileri oluşturun ve fonksiyonunuzu test edin:

  • Sadece bookItem içeren bir dizi olarak bookInventory oluşturun
  • Aşağıdaki özelliklere sahip InventoryItem<{ title: string; author: string }> tipinde newBook oluşturun:
    • id: 4
    • quantity: 2
    • details: { title: "Advanced TypeScript", author: "Jane Smith" }
  • newBook öğesini bookInventory dizisine eklemek için addItem kullanın ve sonucu updatedBookInventory içinde saklayın
  • Sadece electronicItem içeren bir dizi olarak electronicInventory oluşturun
  • Aşağıdaki özelliklere sahip InventoryItem<{ brand: string; model: string }> tipinde newElectronic oluşturun:
    • id: 5
    • quantity: 1
    • details: { brand: "GadgetCorp", model: "Z500" }
  • newElectronic öğesini electronicInventory dizisine eklemek için addItem kullanın ve sonucu updatedElectronicInventory içinde saklayın

Aşağıdaki çıktıları yazdırın:

  • updatedBookInventory dizisinin uzunluğunu yazdırın
  • updatedBookInventory[1].details.title değerini yazdırın
  • updatedBookInventory[1].details.author değerini yazdırın
  • updatedElectronicInventory dizisinin uzunluğunu yazdırın
  • updatedElectronicInventory[1].details.brand değerini yazdırın
  • updatedElectronicInventory[1].details.model değerini yazdırın
  • updatedElectronicInventory[0].id değerini yazdırın
  • updatedElectronicInventory[1].quantity değerini yazdırın

Kendin dene

// Create the generic InventoryItem interface
interface InventoryItem<T> {
  id: number;
  quantity: number;
  details: T;
}

// Create the required objects
const bookItem: InventoryItem<{ title: string; author: string }> = {
  id: 1,
  quantity: 5,
  details: { title: "TypeScript Guide", author: "John Doe" }
};

const electronicItem: InventoryItem<{ brand: string; model: string }> = {
  id: 2,
  quantity: 3,
  details: { brand: "TechCorp", model: "X200" }
};

const clothingItem: InventoryItem<{ size: string; color: string }> = {
  id: 3,
  quantity: 10,
  details: { size: "M", color: "Blue" }
};

// Print the required outputs
console.log(bookItem.id);
console.log(bookItem.quantity);
console.log(bookItem.details.title);
console.log(bookItem.details.author);
console.log(electronicItem.details.brand);
console.log(electronicItem.details.model);
console.log(clothingItem.details.size);
console.log(clothingItem.details.color);

TypeScript'e Giriş bölümündeki tüm dersler