Proje: Genel Envanter Öğesi
Coddy'nin JavaScript Journey'sinin TypeScript'e Giriş bölümünün bir parçası — ders 63 / 73.
İlk TypeScript projenize hoş geldiniz! Generic'lerin gerçek dünyadaki gücünü gösteren genel bir envanter yönetim sistemi oluşturmak üzeresiniz. Bu proje size, generic'lerin tam tür güvenliğini korurken farklı veri türleriyle çalışan esnek ve yeniden kullanılabilir kodları nasıl oluşturabileceğini gösterecektir.
Herhangi bir envanter sisteminin temeli, bir envanter öğesinin nasıl görüneceğini tanımlamaktır. Geleneksel bir yaklaşımda kitaplar, elektronik cihazlar, giyim ve diğer ürün türleri için ayrı arayüzler oluşturabilirsiniz. Ancak generic yapılar sayesinde, her türlü ürün detayına uyum sağlayan tek bir esnek yapı oluşturabilirsiniz.
İlk göreviniz, InventoryItem<T> adında genel bir arayüz (generic interface) oluşturmaktır. Bu arayüz, tüm envanter öğelerinin paylaştığı ortak yapıyı temsil edecektir: kimlik belirleme için bir id, stok seviyelerini takip etmek için bir quantity ve ürüne özgü her türlü bilgiyi tutabilen bir details özelliğine ihtiyaç duyarlar.
Sihir, genel tür parametresi T ile gerçekleşir. Bu, details özelliğinin tamamen esnek olmasını sağlar -kitap bilgileri, elektronik özellikler veya başka herhangi bir ürün verisi olabilir- bu sırada id ve quantity tüm envanter öğelerinde tutarlı bir şekilde sayı olarak kalır.
Görev
KolayYönetim sisteminizdeki herhangi bir envanter öğesinin yapısını temsil eden InventoryItem adında genel (generic) bir arayüz oluşturun.
Arayüz şunları içermelidir:
- Genel bir tür parametresi
Tkullanmalı numbertüründe biridözelliğine sahip olmalınumbertüründe birquantityözelliğine sahip olmalıTtüründe birdetailsözelliğine sahip olmalı
Genel arayüzünüzü kullanarak aşağıdaki nesneleri oluşturun:
- Şu özelliklere sahip
InventoryItem<{ title: string; author: string }>türündebookItem:id: 1quantity: 5details: { title: "TypeScript Guide", author: "John Doe" }
- Şu özelliklere sahip
InventoryItem<{ brand: string; model: string }>türündeelectronicItem:id: 2quantity: 3details: { brand: "TechCorp", model: "X200" }
- Şu özelliklere sahip
InventoryItem<{ size: string; color: string }>türündeclothingItem:id: 3quantity: 10details: { size: "M", color: "Blue" }
Aşağıdaki çıktıları yazdırın:
bookItem.idyazdırınbookItem.quantityyazdırınbookItem.details.titleyazdırınbookItem.details.authoryazdırınelectronicItem.details.brandyazdırınelectronicItem.details.modelyazdırınclothingItem.details.sizeyazdırınclothingItem.details.coloryazdırın
Kendin dene
// YAPILACAK: Kodunuzu buraya yazın
// InventoryItem arayüzünü ve gerekli nesneleri oluşturun
// Gerekli çıktıları yazdırın
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);Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
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