Menu
Coddy logo textTech

Ö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.

challenge icon

Görev

Kolay

Dizin 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:

  • AppConfig türünde config ve string türünde key olmak ü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 string dönüş türüne sahiptir

Şunları yapan getConfigAsString adında bir fonksiyon oluşturun:

  • AppConfig türünde config ve string türünde key olmak üzere iki parametre alır
  • Anahtar mevcut değilse "undefined" döndürür
  • Değer mevcutsa, değeri string olarak ele almak için bir tür onaylaması (type assertion) kullanır ve onu döndürür
  • Açık bir string dönüş türüne sahiptir

Şunları yapan processConfig adında bir fonksiyon oluşturun:

  • AppConfig türünde config ve string türünde key olmak üzere iki parametre alır
  • Tür kontrolü için validateConfigValue fonksiyonunu 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 null döndürür
  • Açık bir string | number | boolean | null dönüş türüne sahiptir

Test verisi oluşturun:

  • Şu değerlere sahip AppConfig türünde settings oluş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:

  • settings ve "appName" ile validateConfigValue fonksiyonunu çağırın
  • settings ve "version" ile validateConfigValue fonksiyonunu çağırın
  • settings ve "debugMode" ile validateConfigValue fonksiyonunu çağırın
  • settings ve "timeout" ile validateConfigValue fonksiyonunu çağırın
  • settings ve "theme" ile getConfigAsString fonksiyonunu çağırın
  • settings ve "missing" ile getConfigAsString fonksiyonunu çağırın
  • settings ve "appName" ile processConfig fonksiyonunu çağırın
  • settings ve "maxUsers" ile processConfig fonksiyonunu çağırın
  • settings ve "debugMode" ile processConfig fonksiyonunu çağırın
  • settings ve "invalid" ile processConfig fonksiyonunu ç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