Özet: Türlerde İnce Ayar Yapma
Coddy'nin JavaScript Journey'sinin TypeScript'e Giriş bölümünün bir parçası — ders 73 / 73.
Görev
KolayDizin imzaları (index signatures), tür korumaları (type guards) ve tür onaylamaları (type assertions) kullanarak dinamik ayarları işleyen bir yapılandırma yönetim sistemi oluşturun.
Dize anahtarlarını string | number | boolean türündeki değerlerle eşlemek için bir dizin imzası kullanan AppConfig adında bir arayüz (interface) oluşturun.
Şunları yapan validateConfigValue adında bir fonksiyon oluşturun:
AppConfigtüründeconfigvestringtüründekeyolmak üzere iki parametre alır- Eğer anahtar yapılandırmada mevcut değilse
"missing"değerini döndürür - Değerin gerçek türünü kontrol etmek için tür korumalarını (type guards) kullanır
- Değer bir dize ise
"string"döndürür - Değer bir sayı ise
"number"döndürür - Değer bir boolean ise
"boolean"döndürür - Açık bir
stringdönüş türüne sahiptir
Şunları yapan getConfigAsString adında bir fonksiyon oluşturun:
AppConfigtüründeconfigvestringtüründekeyolmak üzere iki parametre alır- Anahtar mevcut değilse
"undefined"döndürür - Değer mevcutsa, değeri
stringolarak ele almak için bir tür onaylaması (type assertion) kullanır ve onu döndürür - Açık bir
stringdönüş türüne sahiptir
Şunları yapan processConfig adında bir fonksiyon oluşturun:
AppConfigtüründeconfigvestringtüründekeyolmak üzere iki parametre alır- Tür kontrolü için
validateConfigValuefonksiyonunu kullanır - Eğer değer bir dize ise, büyük harfe dönüştürülmüş halini döndürür
- Eğer değer bir sayı ise, 10 ile çarpılmış halini döndürür
- Eğer değer bir boolean ise, zıt boolean değerini döndürür
- Anahtar eksikse
nulldöndürür - Açık bir
string | number | boolean | nulldönüş türüne sahiptir
Test verisi oluşturun:
- Şu değerlere sahip
AppConfigtüründesettingsoluşturun:"appName":"MyApp""version":2.1"debugMode":true"maxUsers":100"theme":"dark"
Fonksiyonlarınızı test edin ve aşağıdaki çıktıları yazdırın:
settingsve"appName"ilevalidateConfigValuefonksiyonunu çağırınsettingsve"version"ilevalidateConfigValuefonksiyonunu çağırınsettingsve"debugMode"ilevalidateConfigValuefonksiyonunu çağırınsettingsve"timeout"ilevalidateConfigValuefonksiyonunu çağırınsettingsve"theme"ilegetConfigAsStringfonksiyonunu çağırınsettingsve"missing"ilegetConfigAsStringfonksiyonunu çağırınsettingsve"appName"ileprocessConfigfonksiyonunu çağırınsettingsve"maxUsers"ileprocessConfigfonksiyonunu çağırınsettingsve"debugMode"ileprocessConfigfonksiyonunu çağırınsettingsve"invalid"ileprocessConfigfonksiyonunu çağırın
Kendin dene
// YAPILACAK: Kodunuzu buraya yazın
// AppConfig arayüzünü oluşturun
// validateConfigValue fonksiyonunu oluşturun
// getConfigAsString fonksiyonunu oluşturun
// processConfig fonksiyonunu oluşturun
// Test verilerini oluşturun - settings nesnesi
// Fonksiyonları test edin ve sonuçları yazdırın
console.log(validateConfigValue(settings, "appName"));
console.log(validateConfigValue(settings, "version"));
console.log(validateConfigValue(settings, "debugMode"));
console.log(validateConfigValue(settings, "timeout"));
console.log(getConfigAsString(settings, "theme"));
console.log(getConfigAsString(settings, "missing"));
console.log(processConfig(settings, "appName"));
console.log(processConfig(settings, "maxUsers"));
console.log(processConfig(settings, "debugMode"));
console.log(processConfig(settings, "invalid"));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ı8Enumlar
Sayısal Enum Nedir?Sayısal Enum KullanımıString Enum Nedir?String Enum KullanımıHeterojen EnumlarÖzet: Enum Kullanımı11İleri Düzey Konular
Tür AtamalarıTür Korumaları: in & instanceof'never' TürüNullable Türler ('strictNull')Nesneler için İndeks İmzalarıÖzet: Türlerde İnce Ayar Yapma3Veri 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