TypeScript Academy · Ders

Değişmez Oluşturucular

Daha güvenli birleştirme için yeni oluşturucu örnekleri döndürün.

4. ders / 413 adım

Değişmez Oluşturucular, 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.

Değiştirme ve Değişmezlik

Şimdiye kadarki oluşturucular this nesnesini değiştirir ve onu döndürür. Bunun yerine değişmez oluşturucu, her adımda yeni bir oluşturucu örneği döndürür ve özgün örneği hiçbir zaman değiştirmez. Bu, birleştirmeyi daha güvenli kılar.

Paylaşılan Değiştirmenin Sorunu

Kodunuzun iki bölümü aynı değiştirilebilir oluşturucuyu tutuyorsa, bir ayarlayıcı çağrısı ikisini de etkiler. Değişmez oluşturucular, aynı nesneye yapılan başvurulardan kaynaklanan bu sürprizi tamamen önler.

const base = makeMutableBuilder().url("/x");
// If base is shared, later .method() calls mutate everyone's copy.

Yeni Bir Örnek Döndürme

Değişmez bir ayarlayıcı, mevcut durumu kopyalar, yeni alanı ekler ve yeni bir oluşturucu oluşturur. Özgün oluşturucuya dokunulmaz.

class IB<S> {
  constructor(private readonly d: Record<string, unknown> = {}) {}
  with<K extends string, V>(k: K, v: V): IB<S & Record<K, V>> {
    return new IB<S & Record<K, V>>({ ...this.d, [k]: v });
  }
}

Yayma İşleciyle Yapısal Paylaşım

{ ...this.d, [k]: v } yayma işlemi, mevcut girdileri kopyalar ve tek bir anahtarı değiştirir. Değişmeyen değerler başvuru yoluyla paylaşılır; bu nedenle kopyalar küçük kalır.

const a = new IB<{}>().with("url", "/x");
const c = a.with("method", "GET");
// a still only has url; c has url and method.

Özgünler Asla Değişmez

Her adım yeni bir nesne ürettiğinden, daha önceki bir oluşturucudan güvenle dallanabilirsiniz. Kısmen oluşturulmuş bir temeli birden çok yerde yeniden kullanabilirsiniz.

const base = new IB<{}>().with("url", "/api");
const get = base.with("method", "GET");
const post = base.with("method", "POST");
console.log("base untouched; get and post diverge");

Salt Okunur Dahili Durum

Dahili veriyi readonly olarak işaretlemek amacı belgelendirir ve sınıf içinde yanlışlıkla yerinde yazma yapılmasını engeller. İlerleyebilmenin tek yolu yeni bir örnek oluşturmaktır.

class IB<S> {
  constructor(private readonly d: Readonly<Record<string, unknown>> = {}) {}
}

Türlendirilmiş Değişmez Oluşturma

Durum parametresi yine zincir boyunca taşınır; bu nedenle artık değişmez bir temel üzerinde olmak üzere build() çağrısını öncekiyle aynı şekilde kısıtlayabiliriz.

interface Out { url: string; method: string }
class IB<S> {
  constructor(private readonly d: Record<string, unknown> = {}) {}
  with<K extends string, V>(k: K, v: V): IB<S & Record<K, V>> {
    return new IB<S & Record<K, V>>({ ...this.d, [k]: v });
  }
  build(this: IB<{ url: string; method: string }>): Out { return this.d as Out; }
}
const out = new IB<{}>().with("url", "/u").with("method", "GET").build();
console.log(out.url);

Daha Güvenli Birleştirme

Değişmez oluşturucular değerler gibi birleştirilir: birini aktarabilir, yenilerini türetebilir ve sonraki bir çağrının paylaşılan durumu yeniden yazacağından hiç endişe etmeyebilirsiniz. Değişmez verilerin her yerde sağladığı yarar aynıdır.

Yeniden Kullanılabilir Ön Ayarlar

Yaygın bir başlangıç noktasını bir kez kaydedip birçok kez ondan dallanabilirsiniz. Kopyalayarak yazan ayarlayıcılar sayesinde her dal bağımsızdır.

const jsonBase = new IB<{}>().with("header", "application/json");
const usersReq = jsonBase.with("url", "/users");
const ordersReq = jsonBase.with("url", "/orders");
console.log("two independent requests from one base");

Maliyet Hususları

Her adım yeni bir nesne ayırır. Tipik yapılandırma oluşturma işlemlerinde bu maliyet göz ardı edilebilir; yapısal paylaşım da kopyaların sığ kalmasını sağlar. Yalnızca çok sık çalışan döngüler bunu fark eder.

Değiştirilebilir ve Değişmez Yaklaşımın Özeti

Değiştirilebilir oluşturucular biraz daha hızlı ve basittir; değişmez oluşturucular ise paylaşım ve anlama açısından daha güvenlidir. Oluşturucular başka yerlere aktarıldığında veya ön ayar olarak yeniden kullanıldığında değişmez yaklaşımı tercih edin.

Hızlı Kontrol

Bu derse ilişkin hızlı bir kontrol.

Özet

Bir değişmez oluşturucu, { ...this.d, [k]: v } yapısal paylaşımını kullanarak her adımda yeni bir örnek döndürür ve this nesnesini hiçbir zaman değiştirmez. Özgün nesneler korunur; bu da güvenli birleştirme ve yeniden kullanılabilir ön ayarlar sağlar. Bunun karşılığında yalnızca küçük bir nesne oluşturma maliyeti oluşur.

Başlamak ücretsiz

Yapay zeka eğitmeniyle TypeScript öğren — ücretsiz

Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.

Kurslar
101
Dersler
352

Sıkça Sorulan Sorular

“Değişmez Oluşturucular” dersi ücretsiz mi?

Evet — “Değişmez Oluşturucular” 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.

“Değişmez Oluşturucular” dersinde ne öğreneceğim?

Daha güvenli birleştirme için yeni oluşturucu örnekleri döndürü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.

“Değişmez Oluşturucular” 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. Oluşturucu Kalıbının Temelleri
  2. Türlerle Akıcı Arayüzler
  3. Gerekli Adımları Zorunlu Kılma
  4. Değişmez Oluşturucular
← TypeScript Academy Sayfasına Dön