Opsiyonel ve Readonly Özellikler
Coddy'nin JavaScript Journey'sinin TypeScript'e Giriş bölümünün bir parçası — ders 41 / 73.
TypeScript size bu kontrolü sağlayan iki güçlü değiştirici sunar: isteğe bağlı özellik değiştiricisi (optional property modifier) ve salt okunur değiştiricisi (readonly modifier).
? sembolü bir özelliği isteğe bağlı hale getirir, yani bir nesne oluşturulurken bulunması gerekmez. Bu, her zaman ihtiyaç duyulmayabilecek özellikler için kullanışlıdır:
interface User {
name: string;
email?: string; // İsteğe bağlı özellik
}
let user1: User = { name: "Alice" }; // Geçerli - email isteğe bağlıdır
let user2: User = { name: "Bob", email: "bob@example.com" }; // Bu da geçerlireadonly değiştiricisi, bir özelliğin nesne oluşturulduktan sonra değiştirilmesini engeller. Bu, benzersiz tanımlayıcılar gibi sabit kalması gereken özellikler için mükemmeldir:
interface Product {
readonly id: number; // Oluşturulduktan sonra değiştirilemez
name: string;
}
let product: Product = { id: 1, name: "Laptop" };
product.name = "Gaming Laptop"; // Geçerli
// product.id = 2; // Hata: 'id' salt okunur olduğu için atama yapılamazHer iki belirleyiciyi de aynı arayüz üzerinde birleştirebilirsiniz; bu belirleyiciler hem arayüzler hem de tür takma adları ile aynı şekilde çalışarak nesne yapılarınız üzerinde size hassas bir kontrol sağlar.
Görev
KolayAşağıdaki özelliklere sahip Book adında bir arayüz (interface) oluşturun:
stringtüründetitle(zorunlu)stringtüründeisbn(salt okunur - readonly)stringtüründesubtitle(isteğe bağlı - optional)numbertüründepages(zorunlu)numbertüründepublishedYear(salt okunur - readonly)stringtüründegenre(isteğe bağlı - optional)
Aşağıdaki özelliklere sahip Magazine adında bir arayüz (interface) oluşturun:
stringtüründename(zorunlu)numbertüründeissueNumber(salt okunur - readonly)stringtüründetopic(isteğe bağlı - optional)booleantüründemonthlySubscription(zorunlu)
Arayüzlerinizi kullanarak aşağıdaki değişkenleri oluşturun:
Booktüründe, title değeri"1984", isbn değeri"978-0-452-28423-4", pages değeri328ve publishedYear değeri1949olannoveladında bir değişken oluşturunBooktüründe, title değeri"The Joy of Cooking", isbn değeri"978-0-7432-4626-2", subtitle değeri"All About Baking", pages değeri1132, publishedYear değeri2006ve genre değeri"Cooking"olancookbookadında bir değişken oluşturunMagazinetüründe, name değeri"Tech Today", issueNumber değeri45ve monthlySubscription değeritrueolantechMagadında bir değişken oluşturunMagazinetüründe, name değeri"Science Weekly", issueNumber değeri12, topic değeri"Climate Change"ve monthlySubscription değerifalseolanscienceMagadında bir değişken oluşturun
Book türünde bir parametre kabul eden ve string döndüren getBookDetails adında bir fonksiyon oluşturun. Fonksiyon, kitabın başlığını ve sayfa sayısını "[title] - [pages] pages" formatında döndürmelidir.
Magazine türünde bir parametre kabul eden ve string döndüren getMagazineInfo adında bir fonksiyon oluşturun. Fonksiyon, derginin adını ve sayı numarasını "[name] Issue #[issueNumber]" formatında döndürmelidir.
Aşağıdaki çıktıları ayrı satırlara yazdırın:
novelilegetBookDetailsfonksiyonunu çağırın ve sonucu yazdırıncookbookilegetBookDetailsfonksiyonunu çağırın ve sonucu yazdırıntechMagilegetMagazineInfofonksiyonunu çağırın ve sonucu yazdırınscienceMagilegetMagazineInfofonksiyonunu çağırın ve sonucu yazdırınnoveldeğişkeninin ISBN değerini yazdırıntechMagdeğişkeninin abonelik durumunu (monthlySubscriptionözelliği) yazdırın
Kendin dene
// YAPILACAK: Kodunuzu buraya yazın
// Book arayüzünü oluşturun
// Magazine arayüzünü oluşturun
// Arayüzlerinizi kullanarak değişkenleri oluşturun
// getBookDetails fonksiyonunu oluşturun
// getMagazineInfo fonksiyonunu oluşturun
// Gerekli çıktıları yazdırınBu 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şturma2Temel 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