Türlerle İşlev Birleştirme
Tür güvenliğini koruyarak işlevleri birleştirin.
Türlerle İşlev Birleştirme, 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.
Bileşim Nedir
Fonksiyon bileşimi, küçük fonksiyonları daha büyük bir fonksiyonda birleştirir. compose(f, g), önce g fonksiyonunu uygulayan, ardından sonucu f fonksiyonuna aktaran bir fonksiyon üretir.
Temel Tanım
Matematiksel olarak compose(f, g)(x) = f(g(x)) şeklindedir. Fonksiyonlar sağdan sola çalışır: en sağdaki fonksiyon önce çalışır.
const compose = (f: (n: number) => number, g: (n: number) => number) =>
(x: number) => f(g(x));
const inc = (n: number) => n + 1;
const dbl = (n: number) => n * 2;
console.log(compose(inc, dbl)(5)); // 11 (5*2 then +1)Sağdan Sola Sıralama
Sıra önemlidir. compose(inc, dbl) önce ikiyle çarpar, ardından artırırken compose(dbl, inc) önce artırır. Bileşimi içten dışa okuyun.
console.log(compose(dbl, inc)(5)); // 12 (5+1 then *2)Bileşimi Genel Türlerle Tipleme
Genel türler, girdi ve çıktı türlerinin farklı olmasına izin verir. g, A türünü B türüne; f, B türünü C türüne eşler ve sonuç A türünü C türüne eşler.
function compose<A, B, C>(f: (b: B) => C, g: (a: A) => B): (a: A) => C {
return a => f(g(a));
}Yol Boyunca Türleri Değiştirme
Genel türler A -> B -> C zincirini oluşturduğu için bileşim, bir değeri dizgeden sayıya ve ardından yeniden dizgeye dönüştürmek gibi çeşitli biçimlerden geçirebilir.
const length = (s: string) => s.length;
const toStr = (n: number) => "len=" + n;
const describe = compose(toStr, length);
console.log(describe("hello")); // len=5Tür Sınırı Uyuşmalıdır
g fonksiyonunun çıktısı, f fonksiyonunun girdisiyle eşleşmelidir. Uyuşmazlarsa derleyici bileşimi reddeder ve bağlantı hatalarını erkenden yakalar.
// compose(length, toStr) would error:
// toStr returns string, length expects string -> ok here,
// but mismatched pairs are flagged by the compiler.Üç Fonksiyonu Birleştirme
Bileşimi iç içe kullanabilir veya üç bağımsız değişken alan bir sürüm yazabilirsiniz. Sağdan sola kuralı bunların tümünde geçerliliğini korur.
const compose3 = <A, B, C, D>(
f: (c: C) => D, g: (b: B) => C, h: (a: A) => B
) => (a: A): D => f(g(h(a)));
const inc = (n: number) => n + 1;
const dbl = (n: number) => n * 2;
const neg = (n: number) => -n;
console.log(compose3(neg, dbl, inc)(3)); // -8Bileşim İşlem Hatları Oluşturur
Küçük ve saf fonksiyonları birleştirerek karmaşık dönüşümleri bildirime dayalı biçimde oluşturabilirsiniz. Her parça, yalıtılmış olarak sınanabilir.
const trim = (s: string) => s.trim();
const upper = (s: string) => s.toUpperCase();
const clean = compose(upper, trim);
console.log(clean(" hi ")); // HISaf Fonksiyonlar Neden En İyi Bileşimi Sağlar
Bileşim, her fonksiyonun yalnızca girdisine bağlı olduğunu varsayar. Saf fonksiyonlar bunu garanti eder; dolayısıyla bunları birleştirmek, öngörülebilir başka bir saf fonksiyon üretir.
compose ve İşlem Hattı Karşılaştırması
compose sağdan sola çalışır ve matematiksel gösterimi yansıtır. Birçok kişi, sonraki bölümde ele alınan pipe işlevinin sağladığı soldan sağa okumayı tercih eder.
Parçaları Küçük Tutun
Bileşim, her fonksiyon tek bir küçük iş yaptığında öne çıkar. Küçük, adlandırılmış ve saf adımlar, birleştirilmiş işlem hattını kendini açıklayan ve kolayca yeniden düzenlenebilir hâle getirir.
Kısa Kontrol
Bu ders için kısa bir kontrol.
Özet
compose(f, g)(x) = f(g(x)), sağdan sola çalışır. Genel tür zinciri A -> B -> C olduğundan g fonksiyonunun çıktısı f fonksiyonunun girdisiyle eşleşmelidir; böylece derleyici küçük saf fonksiyonlardan oluşan işlem hattını doğrulayabilir.
Sıkça Sorulan Sorular
“Türlerle İşlev Birleştirme” dersi ücretsiz mi?
Evet — “Türlerle İşlev Birleştirme” 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ürlerle İşlev Birleştirme” dersinde ne öğreneceğim?
Tür güvenliğini koruyarak işlevleri birleştirin. 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.
“Türlerle İşlev Birleştirme” 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
- Saf İşlevler ve Değişmezlik
- Kısmi Uygulama ve Curry
- Türlerle İşlev Birleştirme
- Türleri Belirlenmiş pipe ve flow Yardımcıları