Menu
Coddy logo textTech

ID ile Öğe Bulma Fonksiyonu

Coddy'nin JavaScript Journey'sinin TypeScript'e Giriş bölümünün bir parçası — ders 65 / 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 dizilerine öğe ekleyen genel (generic) fonksiyon addItem
  • Çeşitli envanter öğeleri ve güncellenmiş envanter dizileri

Bir envanter dizisinde ID'sine göre bir öğe arayan findItemById adında genel (generic) bir fonksiyon oluşturun.

Fonksiyon şunları yapmalıdır:

  • Genel bir tip parametresi T kullanmalı
  • InventoryItem<T>[] tipinde bir inventory parametresi almalı
  • number tipinde bir id parametresi almalı
  • Bulunan InventoryItem<T> tipindeki öğeyi veya bulunamazsa undefined değerini döndürmeli
  • InventoryItem<T> | undefined şeklinde açık bir dönüş tipi belirtecine sahip olmalı

Test envanterleri oluşturun:

  • Şunları içeren bir dizi olarak mixedBookInventory oluşturun:
    • id: 10, quantity: 3, details: { title: "JavaScript Basics", author: "Alice Brown" } özelliklerine sahip bir öğe
    • id: 11, quantity: 7, details: { title: "React Fundamentals", author: "Bob Wilson" } özelliklerine sahip bir öğe
    • id: 12, quantity: 2, details: { title: "Node.js Guide", author: "Carol Davis" } özelliklerine sahip bir öğe
  • Şunları içeren bir dizi olarak mixedElectronicInventory oluşturun:
    • id: 20, quantity: 5, details: { brand: "Samsung", model: "Galaxy S23" } özelliklerine sahip bir öğe
    • id: 21, quantity: 1, details: { brand: "Apple", model: "iPhone 15" } özelliklerine sahip bir öğe

Fonksiyonunuzu test edin ve aşağıdaki çıktıları yazdırın:

  • mixedBookInventory içinde ID'si 11 olan öğeyi bulun ve sonucun details.title özelliğini (veya bulunamazsa undefined) yazdırın
  • mixedElectronicInventory içinde ID'si 20 olan öğeyi bulun ve sonucun details.brand özelliğini (veya bulunamazsa undefined) yazdırın
  • mixedBookInventory içinde ID'si 99 olan öğeyi bulun ve sonucu yazdırın (undefined olmalıdır)
  • mixedBookInventory içinde ID'si 12 olan öğeyi bulun ve sonucun quantity özelliğini (veya bulunamazsa undefined) yazdırın
  • mixedElectronicInventory içinde ID'si 21 olan öğeyi bulun ve sonucun details.model özelliğini (veya bulunamazsa undefined) yazdırın
  • mixedBookInventory içinde ID'si 10 olan öğeyi bulun ve sonucun id özelliğini (veya bulunamazsa undefined) yazdırın
  • mixedElectronicInventory içinde ID'si 50 olan öğeyi bulun ve sonucu yazdırın (undefined olmalıdır)

Kendin dene

// Generic interface from previous challenge
interface InventoryItem<T> {
  id: number;
  quantity: number;
  details: T;
}

// Items from previous challenge
const bookItem: InventoryItem<{ title: string; author: string }> = {
  id: 1,
  quantity: 5,
  details: { title: "TypeScript Handbook", author: "John Doe" }
};

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

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

// Generic function to add item to inventory
function addItem<T>(inventory: InventoryItem<T>[], newItem: InventoryItem<T>): InventoryItem<T>[] {
  return [...inventory, newItem];
}

// Create book inventory and new book
const bookInventory = [bookItem];
const newBook: InventoryItem<{ title: string; author: string }> = {
  id: 4,
  quantity: 2,
  details: { title: "Advanced TypeScript", author: "Jane Smith" }
};
const updatedBookInventory = addItem(bookInventory, newBook);

// Create electronic inventory and new electronic
const electronicInventory = [electronicItem];
const newElectronic: InventoryItem<{ brand: string; model: string }> = {
  id: 5,
  quantity: 1,
  details: { brand: "GadgetCorp", model: "Z500" }
};
const updatedElectronicInventory = addItem(electronicInventory, newElectronic);

// Print outputs
console.log(updatedBookInventory.length);
console.log(updatedBookInventory[1].details.title);
console.log(updatedBookInventory[1].details.author);
console.log(updatedElectronicInventory.length);
console.log(updatedElectronicInventory[1].details.brand);
console.log(updatedElectronicInventory[1].details.model);
console.log(updatedElectronicInventory[0].id);
console.log(updatedElectronicInventory[1].quantity);

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