0Pricing
TypeScript Academy · Ders

Enterpolasyon Tür Güvenliği

Dizelerden enterpolasyon değişkenlerini çıkarın ve bunları zorunlu kılın.

Enterpolasyon Tür Güvenliği, CoddyKit'te ücretsiz bir TypeScript Academy dersidir. Bu, 4 dersinin 2. 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.

Tür Güvenli Yerleştirme

Mesajlar çoğu zaman "Hello, {name}" gibi yer tutucular içerir. Tür güvenli i18n, bu yer tutucu adlarını mesaj dizesi türünden çıkarır ve eşleşen bağımsız değişkenleri iletmenizi zorunlu kılar.

Amaç

Bir mesajın değişmez türü verildiğinde, ihtiyaç duyduğu değişkenler nesnesini hesaplamak istiyoruz; böylece t("greet", { name: "Ada" }) zorunlu kılınır ve eksik bir name derleme hatasına yol açar.

Tek Bir Yer Tutucuyu Çıkarma

Bir şablon dizesi koşullu türü, tek yer tutuculu bir dizeden değişken adını çıkarır. Gerçek kodda desen backtick'lerle şu şekilde yazılır: dize, açma küme ayracı, infer V, kapatma küme ayracı, dize. Bu eşleştiriciyi aşağıda BraceMatch olarak gösteriyoruz.

// Real TS pattern (backtick template literal):
//   matches any text, then {V}, then any text; infers V.

type Var<S extends string> =
  S extends BraceMatch<infer V> ? V : never;

type A = Var<"Hello, {name}">; // "name"

Birden Çok Yer Tutucuyu Çıkarma

Her yer tutucuyu bir birleşimde toplamak için özyineleme kullanın. Desen, bir değişkeni ve kalan kuyruğu yakalar, ardından kuyruk üzerinde özyinelemeli olarak çalışır.

// Pattern: any text, {V}, then Rest tail -- infer V and Rest.

type Vars<S extends string> =
  S extends BraceMatchRest<infer V, infer Rest>
    ? V | Vars<Rest>
    : never;

type B = Vars<"Hi {first} {last}!">; // "first" | "last"

Adlardan Argümanlar Nesnesine

Adların birleşimini, eşlenmiş bir tür kullanarak gerekli bir nesne türüne dönüştürün.

type ArgsOf<S extends string> = {
  [K in Vars<S>]: string | number;
};

type G = ArgsOf<"Hello, {name}">;
// { name: string | number }

Yer Tutucu Yoksa Argüman da Yok

Bir mesajda yer tutucu bulunmadığında Vars, never olur ve bağımsız değişkenler nesnesi boş kalır. Bu durumda bağımsız değişken parametresini isteğe bağlı hâle getirebiliriz.

type C = Vars<"Goodbye">;       // never
type D = ArgsOf<"Goodbye">;     // {} (empty)

Tür Güvenli Çeviri İşlevi

Mesaj değişmezini arayıp bağımsız değişkenlerini hesaplayarak bağımsız değişken parametresini seçilen anahtara bağlı hâle getirin.

declare const messages: {
  greet: "Hello, {name}";
  invite: "Join {count} others";
};

declare function t<K extends keyof typeof messages>(
  key: K,
  args: ArgsOf<(typeof messages)[K]>
): string;

Zorunluluk Uygulamada

Derleyici artık her mesajın bildirdiği değişkenlerin tam olarak sağlanmasını zorunlu kılar.

t("greet", { name: "Ada" });   // ok
t("greet", {});                 // Error: name is missing
t("invite", { count: 3 });      // ok
t("invite", { name: "x" });     // Error: count missing, name unexpected

Düz Mesajlar İçin İsteğe Bağlı Argümanlar

Yer tutucusu olmayan mesajların ikinci bir bağımsız değişken gerektirmemesi için koşullu bir aşırı yükleme kullanın.

type MaybeArgs<S extends string> =
  Vars<S> extends never ? [] : [args: ArgsOf<S>];

declare function t2<K extends keyof typeof messages>(
  key: K,
  ...rest: MaybeArgs<(typeof messages)[K]>
): string;

Özel Sınırlayıcılar

Kataloğunuz {{name}} veya %{name} kullanıyorsa Vars içindeki şablon dizesi desenini buna göre ayarlayın. Teknik aynıdır; yalnızca çevreleyen değişmez metin değişir.

Bunun Önemi

Eksik veya yanlış yazılmış araya değer yerleştirme değişkenleri, bozuk kullanıcı arayüzü dizelerinin klasik bir kaynağıdır ("Hello, undefined"). Bunları tür düzeyinde çıkarmak, bu sorunları derleme hatalarına dönüştürür ve her ileti sözleşmesini belgeler.

Hızlı Kontrol

Araya değer yerleştirme tür güvenliği konusundaki anlayışınızı sınayın.

Özet

Şablon değişmezleriyle ileti değişmez türlerini desen eşleştirerek ve infer kullanarak yer tutucu adlarını bir birleşime çıkarır, bunları zorunlu bir bağımsız değişkenler nesnesine eşlersiniz. Böylece çeviri işlevi tam olarak bu değişkenleri ister; hiçbiri yoksa bağımsız değişkenler isteğe bağlı olur.

Sıkça Sorulan Sorular

“Enterpolasyon Tür Güvenliği” dersi ücretsiz mi?

Evet — “Enterpolasyon Tür Güvenliği” 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.

“Enterpolasyon Tür Güvenliği” dersinde ne öğreneceğim?

Dizelerden enterpolasyon değişkenlerini çıkarın ve bunları zorunlu kılı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 2. dersidir.

“Enterpolasyon Tür Güvenliği” 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