Tür Yapıcılarını Tanımlama
Tür yapıcılarını arayüz aramaları olarak kodlayın.
Tür Yapıcılarını Tanımlama, 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 Kurucularını Adlandırma
Kodlama, her tür kurucusuna URI adı verilen benzersiz bir dize tanımlayıcısı vererek başlar. URI, kurucunun kendisini geçemediğimiz her yerde onun yerine geçen bir etikettir.
type ArrayURI = "Array";
type OptionURI = "Option";
// Each container gets a unique string tagBir Kayıt Defteri Arayüzü
Her URI'yi, verilen A argümanı için ürettiği somut türe eşleyen tek bir arayüz tutarız. Bu arayüz kayıt defteridir. Her anahtar bir URI, her değer ise çözümlenen türdür.
interface URItoKind<A> {
Array: Array<A>;
Option: A | null;
}
// URItoKind<number>["Array"] is number[]Bir Kurucuyu Arama
Kayıt defteri URI'ye göre anahtarlanmış olduğundan, bir kurucuyu uygulamak indeksli erişime dönüşür. "Sayının uygulandığı dizi"ni elde etmek için kayıt defterini indekslersiniz.
type ArrayOfNumber = URItoKind<number>["Array"]; // number[]
type OptionOfString = URItoKind<string>["Option"]; // string | nullURIS Birleşimi
Geçerli kurucu etiketleri kümesi, kayıt defterinin anahtarlarından ibarettir. keyof URItoKind<unknown>, kayıtlı tüm URI'lerin birleşimini verir; biz buna URIS adını veririz.
type URIS = keyof URItoKind<unknown>; // "Array" | "Option"Bildirim Birleştirme Kayıt Defterini Genişletir
Güçlü bir TypeScript özelliği şudur: aynı ada sahip arayüzler birleşir. Kütüphaneler, özgün tanımı düzenlemeden her modülün kendi kapsayıcısını URItoKind'e ekleyebilmesi için bu özelliği kullanır.
interface URItoKind<A> {
Tree: { value: A; children: Array<A> };
}
// Now URIS also includes "Tree"Modüler Kapsayıcılar
Birleştirme sayesinde bir dosyada tanımlanan kapsayıcı kendisini genel olarak kaydeder. Onu içe aktaran herkes, genel soyutlamalarda kapsayıcının URI'sini kullanabilir. fp-ts'nin Option, Either, Task ve daha fazlasını ekleme yöntemi tam olarak budur.
// file a.ts
interface URItoKind<A> { Either: { left: A } | { right: A } }
// file b.ts can now reference the "Either" URIBir Hayalet Taşıyıcı
"Hangi kurucu" bilgisini değer düzeyinde bir tür olarak taşıyabilmek için örnekler, çoğu zaman hayalet bir alan olan bir özellikte URI'lerini taşır. Bu alan gerçek bir değer içermez; yalnızca tür sistemi için etiketi kaydeder.
interface HasURI<F extends URIS> {
readonly _URI: F;
}
// _URI records which constructor an instance is forURI'yi Argümanla Eşleştirme
Bir kurucu uygulaması iki şeye ihtiyaç duyar: F URI'sine ve A argüman türüne. Bunları bir arama aracılığıyla birleştireceğiz; böylece (F, A), kayıt defteri üzerinden somut türe çözümlenecek.
type Apply<F extends URIS, A> = URItoKind<A>[F];
type A = Apply<"Array", number>; // number[]
type B = Apply<"Option", string>; // string | nullNeden Dizeler, Kurucular Değil
Dizeleri kullanırız; çünkü TypeScript bunları değişmez türler olarak saklayıp karşılaştırabilir ve bir kayıt defterini bunlarla indeksleyebilir. Array kurucusunu bir tür parametresi olarak saklayamayız, ancak saklayabilir ve değişmez "Array" değerini arayabiliriz.
type Tag = "Array";
type Resolved = URItoKind<boolean>[Tag]; // boolean[]Arama Temel Adımdır
Bu indeksli erişim olan URItoKind<A>[F], kodlamanın merkezidir. Olanaksız bir tür uygulaması olan F<A>'yı, geçerli bir kayıt defteri aramasına dönüştürür. Sonraki ders bunu Kind<F, A> olarak biçimsel hâle getirecek.
type Kind<F extends URIS, A> = URItoKind<A>[F];
type X = Kind<"Array", number>; // number[]Kurulum Özeti
Artık parçalar elinizde: etiket olarak URI'ler, etiketi ve argümanı somut türe eşleyen bir URItoKind kayıt defteri, etiketlerin birleşimi olarak URIS ve bunu genişletmek için bildirim birleştirme. Kayıt defterini indekslemek, tür uygulamasını taklit eder.
// URItoKind = registry, URIS = valid tags,
// URItoKind<A>[F] = "apply constructor F to A"Hızlı Kontrol
Kayıt defteri kodlamasını ne kadar anladığınızı sınayın.
Özet
Tür kurucularını dizelerle kodlamayı öğrendiniz.
- Her kurucu benzersiz bir URI etiketi alır.
URItoKind<A>, etiketleri somut türlere eşler.URIS,keyofaracılığıyla tüm etiketlerin birleşimidir.- Bildirim birleştirme, modüllerin yeni kapsayıcılar kaydetmesini sağlar.
Sırada: aramayı hafif Kind kalıbı olarak paketlemek var.
Sıkça Sorulan Sorular
“Tür Yapıcılarını Tanımlama” dersi ücretsiz mi?
Evet — “Tür Yapıcılarını Tanımlama” 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.
“Tür Yapıcılarını Tanımlama” dersinde ne öğreneceğim?
Tür yapıcılarını arayüz aramaları olarak kodlayı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.
“Tür Yapıcılarını Tanımlama” 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
- TypeScript'te HKT Sorunu
- Tür Yapıcılarını Tanımlama
- Hafif HKT Kalıbı
- Genel Functor'lar ve Eşleyiciler