0Pricing
TypeScript Academy · Ders

Yerel Ayara Duyarlı Tür Çıkarımı

Tüm yerel ayarların aynı anahtar yapısını paylaşmasını sağlayın.

Yerel Ayara Duyarlı Tür Çıkarımı, CoddyKit'te ücretsiz bir TypeScript Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, TypeScript Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. TypeScript Academy kursu toplamda 4 dersten oluşur.

Yerel Ayara Duyarlı Tür Çıkarımı

Bir uygulama birden çok yerel ayarla (en, tr, de...) sunulur. Temel yapıda bulunan anahtarlardan herhangi biri eksik olduğunda hata veren bir tür istiyoruz; böylece çeviriler hiçbir zaman sessizce eşzamanlılığını yitirmez.

Temel Yerel Ayar

Bir yerel ayarı (genellikle en) temel anahtar yapısı olarak belirleyin. Diğer her yerel ayar bu yapıyla eşleşmelidir.

const en = {
  greeting: "Hello",
  cart: { empty: "Empty", checkout: "Checkout" },
} as const;

type Base = typeof en;

Diğer Yerel Ayarları Kısıtlama

Eklenen her yerel ayarı temel yapıyla türlendirin. Artık eksik bir anahtar, ilgili yerel ayarın dosyasında derleme hatasıdır.

const tr: Base = {
  greeting: "Merhaba",
  cart: { empty: "Bo\u015f", checkout: "\u00d6deme" },
};
// Omitting cart.checkout -> Error: property missing

Fazladan Anahtarları da Yakalama

Temel türü bildirim olarak kullanmak, bir yerel ayarda bulunup temelde bulunmayan bilinmeyen anahtarları da işaretler; böylece geride kalmış veya yanlış yazılmış girdiler yakalanır.

const de: Base = {
  greeting: "Hallo",
  cart: { empty: "Leer", checkout: "Kasse" },
  extra: "oops", // Error: not in Base
};

Yerel Ayarları Tanımlamak için Yardımcı

Jenerik bir yardımcı, her değeri korurken yapıyı zorunlu kılar ve her yerel ayarın temiz bir tanımlama noktasını sağlar.

function defineLocale<T extends Base>(loc: T): T {
  return loc;
}

const fr = defineLocale({
  greeting: "Bonjour",
  cart: { empty: "Vide", checkout: "Paiement" },
});

Tüm Yerel Ayarların Kayıt Defteri

Yerel ayarları bir kayıtta toplayın. Her değeri Base ile kısıtlamak, uygulamanın tamamında tek tip bir yapı sağlar.

const locales: Record<string, Base> = { en, tr, de: fr };
// every entry must have the full Base key structure

Tür Düzeyinde Eşitlik (Derin)

Daha sıkı güvenceler için anahtar yapılarını derinlemesine karşılaştıran ve farklı olduklarında bir hata türüne çözümlenen SameKeys türünü oluşturabilirsiniz. Bu, sıradan bir tür bildiriminin yakalayabildiklerinin ötesine geçer.

type SameKeys<A, B> =
  keyof A extends keyof B
    ? keyof B extends keyof A ? true : false
    : false;

Anahtarları Bir Kez Türetme

Tüm yerel ayarlar Base değerini paylaştığından, anahtar yolu türü (önceki dersten) bir kez Base üzerinden hesaplanır ve her yerel ayar için yeniden kullanılır. Böylece t türlemesi yerel ayardan bağımsız olur.

type Key = LeafPaths<Base>;
// same valid keys regardless of active locale

Çalışma Zamanında Yerel Ayar Seçimi

Çalışma zamanında kayıt defterinde etkin yerel ayarı anahtar olarak kullanırsınız. Tür sistemi her yerel ayarın aynı anahtarlara sahip olduğunu zaten garanti ettiğinden aramalar güvenlidir.

function translate(locale: keyof typeof locales, key: Key): string {
  return getPath(locales[locale], key);
}

Yerel Ayarlar Arasında Eksik Anahtarları Tespit Etme

Her dosyaya doğrudan bildirim ekleyemiyorsanız (örneğin JSON içe aktarmalarında), derleme zamanında yapılan bir tür denetimi içe aktarılan her yerel ayarı Base ile karşılaştırır ve eksik anahtarları listeleyen bir fark türü ortaya çıkarır.

type Missing<L> = Exclude<keyof Base, keyof L>;
type TrMissing = Missing<typeof tr>; // never if complete

Bunun Önemi

Türsüz i18n uygulamaları zamanla birbirinden uzaklaşır: en içine eklenen bir anahtar de içinde unutulur ve boş ya da İngilizce bir dize yayımlanır. Her yerel ayarı ortak bir temel yapıyla kısıtlamak, bu eksikliği derleme hatasına dönüştürerek tüm yerel ayarların eksiksiz ve tutarlı kalmasını sağlar.

Hızlı Kontrol

Yerel ayara duyarlı tür çıkarımı konusundaki anlayışınızı doğrulayın.

Özet

Temel şekil olarak bir temel yerel ayar seçtiniz ve diğer tüm yerel ayarları buna göre kısıtladınız; böylece eksik veya fazladan anahtarlar derlenemez. Bir defineLocale yardımcısı ve kısıtlanmış bir kayıt defteri, tüm yerel ayarların yapısal olarak aynı kalmasını sağlar; anahtar yolları da temel yapıdan bir kez türetilir.

Sıkça Sorulan Sorular

“Yerel Ayara Duyarlı Tür Çıkarımı” dersi ücretsiz mi?

Evet — “Yerel Ayara Duyarlı Tür Çıkarımı” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve TypeScript Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. TypeScript Academy kursu toplamda 4 dersten oluşur.

“Yerel Ayara Duyarlı Tür Çıkarımı” dersinde ne öğreneceğim?

Tüm yerel ayarların aynı anahtar yapısını paylaşmasını sağlayın. TypeScript Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

TypeScript Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te TypeScript Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.

“Yerel Ayara Duyarlı Tür Çıkarımı” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu TypeScript Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her TypeScript Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Çeviri Anahtarlarının Türünü Belirleme
  2. Enterpolasyon Tür Güvenliği
  3. Türlerle Çoğullaştırma
  4. Yerel Ayara Duyarlı Tür Çıkarımı
← TypeScript Academy Sayfasına Dön