ID ile Öğe Bulma Fonksiyonu
Coddy'nin JavaScript Journey'sinin TypeScript'e Giriş bölümünün bir parçası — ders 65 / 73.
Görev
KolayÖnceki meydan okumadan size aşağıdakiler sağlanmıştır:
id,quantityvedetailsözelliklerine sahip genel (generic) arayüzInventoryItem<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
Tkullanmalı InventoryItem<T>[]tipinde birinventoryparametresi almalınumbertipinde biridparametresi almalı- Bulunan
InventoryItem<T>tipindeki öğeyi veya bulunamazsaundefineddeğ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
mixedBookInventoryoluşturun:id: 10,quantity: 3,details: { title: "JavaScript Basics", author: "Alice Brown" }özelliklerine sahip bir öğeid: 11,quantity: 7,details: { title: "React Fundamentals", author: "Bob Wilson" }özelliklerine sahip bir öğeid: 12,quantity: 2,details: { title: "Node.js Guide", author: "Carol Davis" }özelliklerine sahip bir öğe
- Şunları içeren bir dizi olarak
mixedElectronicInventoryoluşturun:id: 20,quantity: 5,details: { brand: "Samsung", model: "Galaxy S23" }özelliklerine sahip bir öğeid: 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:
mixedBookInventoryiçinde ID'si 11 olan öğeyi bulun ve sonucundetails.titleözelliğini (veya bulunamazsaundefined) yazdırınmixedElectronicInventoryiçinde ID'si 20 olan öğeyi bulun ve sonucundetails.brandözelliğini (veya bulunamazsaundefined) yazdırınmixedBookInventoryiçinde ID'si 99 olan öğeyi bulun ve sonucu yazdırın (undefinedolmalıdır)mixedBookInventoryiçinde ID'si 12 olan öğeyi bulun ve sonucunquantityözelliğini (veya bulunamazsaundefined) yazdırınmixedElectronicInventoryiçinde ID'si 21 olan öğeyi bulun ve sonucundetails.modelözelliğini (veya bulunamazsaundefined) yazdırınmixedBookInventoryiçinde ID'si 10 olan öğeyi bulun ve sonucunidözelliğini (veya bulunamazsaundefined) yazdırınmixedElectronicInventoryiçinde ID'si 50 olan öğeyi bulun ve sonucu yazdırın (undefinedolmalı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
1TS ile Başlarken
TypeScript Nedir?Neden TypeScript Kullanılır?İlk TypeScript KodunuzDerleme Süreci ve HatalarÖzet: TS'ye Giriş4Fonksiyonlarla Çalışmak
Parametre ve Dönüş Değerlerini TiplendirmeArrow Fonksiyonlarını Tiplendirme'void' Dönüş Tipi'?' ile Opsiyonel ParametrelerVarsayılan Parametre DeğerleriRest Parametrelerini TiplendirmeFonksiyon Tiplerini TanımlamaÖzet: Tiplendirilmiş Fonksiyonlar Oluşturma7Proje: Basit Bir Görev Listesi
Proje: Görev Struct'ını TanımlamaGörev Ekleme Fonksiyonu10Proje: Envanter Yönetimi
Proje: Genel Envanter ÖğesiFonksiyon: Envantere Öğe Ekle2Temel Tipler
Temel Tipler: str, num, boolean'any' Tipi: Kaçış Yolu'unknown' Tipi'null' ve 'undef' ile ÇalışmakTip Çıkarımı İş BaşındaAçık Tip BelirlemeleriÖzet: Temel Tipler Pratiği5Tipler: Takma Adlar, Unionlar ve Kesişimler
İlkel Tipler için Tip Takma AdlarıUnion Tipler ('|')Union Tipler ile ÇalışmakLiteral TiplerKesişim Tipleri ('&')Tip Takma Adlarını BirleştirmeÖzet: Gelişmiş Tip Kombinasyonları3Veri Yapısı: Diziler ve Tuple
Tipli DizilerDiziler için 'readonly' BelirleyicisiTuple Nedir?Tuple Tanımlama ve ErişmeTuple DestructuringReadonly Tuple'larÇok Boyutlu Tipli DizilerDizilerle Spread OperatörüÖzet: Diziler ve Tuple'lar6Nesneleri ve Interface'leri Tiplendirme
Satır İçi Nesne Tipi BelirtimleriNesneler için Type Alias KullanımıInterface'lere GirişInterface'ler ve Type Alias'ların KarşılaştırılmasıOpsiyonel ve Readonly ÖzelliklerInterface ve Tipleri GenişletmeInterface'lere Metot EklemeÖzet: Nesne Yapılarını Tanımlama