Gerekli Adımları Zorunlu Kılma
Gerekli tüm alanlar ayarlanana kadar build() işlevini engelleyin.
Gerekli Adımları Zorunlu Kılma, CoddyKit'te ücretsiz bir TypeScript Academy dersidir. Bu, 4 dersinin 3. 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.
Erken build() Çağrısını Durdurma
Şimdi birikmiş durumu kullanarak zorunlu alanlar ayarlanana kadar build() çağrısını yasaklıyoruz. Eksik bir oluşturmayı çalışma zamanı denetimi değil, tür sistemi engeller.
Son Yapıyı Tanımlama
Tam nesneyi ve hangi anahtarların zorunlu olduğunu bildirerek başlayın. Oluşturucu, yalnızca durum tüm zorunlu anahtarları içerdiğinde build() işlemine izin verecektir.
interface Config {
url: string; // required
method: string; // required
timeout?: number; // optional
}
type Required = { url: string; method: string };Koşullu build İmzası
build yöntemini yalnızca birikmiş durum S zorunlu anahtarları kapsadığında kullanılabilir hâle getiririz. Koşullu bir tür, gerçek yöntemi veya kullanılamaz bir yöntemi döndürür.
class Builder<S> {
build(this: Builder<Required>): Config {
return this.d as Config;
}
private d: Record<string, unknown> = {};
}Bu Parametreyi Kullanma
this: Builder<Required> parametresi, hangi oluşturucu örneklerinin build çağrısı yapabileceğini kısıtlar. S, Required koşulunu karşılamıyorsa çağrı bir tür hatasıdır.
// Only a Builder whose S includes url and method
// can legally invoke build().Ayarlayıcıları Duruma Bağlama
Her ayarlayıcı, önceki gibi S'yi genişletir. Her iki zorunlu ayarlayıcı da çalıştıktan sonra S nihayet Required koşulunu karşılar ve build çağrılabilir hâle gelir.
class Builder<S> {
private d: Record<string, unknown> = {};
url(u: string): Builder<S & { url: string }> { this.d.url = u; return this as any; }
method(m: string): Builder<S & { method: string }> { this.d.method = m; return this as any; }
build(this: Builder<{ url: string; method: string }>): Config { return this.d as Config; }
}Başarılı Yol Derlenir
Her iki zorunlu adım da mevcut olduğunda zincir tür denetiminden geçer ve çalışır. Derleyici, S'nin her zorunlu anahtarı içerdiğinden emindir.
const cfg = new Builder<{}>().url("/x").method("GET").build();
console.log(cfg.url, cfg.method);Başarısız Yol Hata Verir
Zorunlu bir adımı atlarsanız build() artık tür denetiminden geçmez; çünkü oluşturucunun S'si Required koşulunu karşılamaz. Hata derleme zamanında yakalanır.
// const bad = new Builder<{}>().url("/x").build();
// Error: 'build' can only be called when method is set too.Bu Yaklaşım Çalışma Zamanı Denetimlerinden Neden Daha İyi
Çalışma zamanındaki if (!this.url) throw denetimi yalnızca kod çalıştığında başarısız olur. this parametresi yaklaşımı ise tür denetimi sırasında başarısız olur; böylece eksik oluşturma işlemleri hiçbir zaman kullanıma sunulmaz.
İsteğe Bağlı Alanlar İsteğe Bağlı Kalır
timeout gibi isteğe bağlı adımlar hiçbir zaman Required parçası değildir; bu nedenle build() çağrısını engellemezler. Bunları özgürce ekleyebilir veya atlayabilirsiniz.
const ok = new Builder<{}>().method("PUT").url("/y").build();
console.log("order of required steps does not matter");Çok Sayıda Gereksinime Ölçekleme
Required yapısına ve this parametresine daha fazla zorunlu anahtar yerleştirin; derleyici hepsini zorunlu kılar. Bu yaklaşım, gerekli adımların sayısı ne olursa olsun ölçeklenebilir.
Sınırlamalar
Garanti, S'nin her ayarlayıcı boyunca doğru biçimde taşınmasına ve this parametresi tür bilgisinin kullanılmasına bağlıdır. Tür dönüşümleri ayarlayıcılarla sınırlı tutulmalıdır; böylece çağıran kod tamamen tür güvenli kalır.
Hızlı Kontrol
Bu derse ilişkin hızlı bir kontrol.
Özet
Zorunlu adımları güvence altına almak için build yöntemini this: Builder<Required> parametresiyle türlendirin. Yöntem, birikmiş durum S her zorunlu anahtarı içerdiğinde tür denetiminden geçer; böylece eksik oluşturma işlemi bir derleme hatasına dönüşür.
Sıkça Sorulan Sorular
“Gerekli Adımları Zorunlu Kılma” dersi ücretsiz mi?
Evet — “Gerekli Adımları Zorunlu Kılma” 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.
“Gerekli Adımları Zorunlu Kılma” dersinde ne öğreneceğim?
Gerekli tüm alanlar ayarlanana kadar build() işlevini engelleyin. 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 3. dersidir.
“Gerekli Adımları Zorunlu Kılma” 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
- Oluşturucu Kalıbının Temelleri
- Türlerle Akıcı Arayüzler
- Gerekli Adımları Zorunlu Kılma
- Değişmez Oluşturucular