0Pricing
TypeScript Academy · Ders

Türleri Belirlenmiş pipe ve flow Yardımcıları

Doğru çıkarımlarla soldan sağa işlem hatları oluşturun.

Türleri Belirlenmiş pipe ve flow Yardımcıları, 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.

compose İşlem Hattına Geçiş

İşlem hattı, bir değeri çoğu kişinin tercih ettiği okuma sırasına uygun olarak fonksiyonlardan soldan sağa geçirir. pipe(x, f, g), g(f(x)) anlamına gelir.

İki Adımlı İşlem Hattı

En basit işlem hattı bir değerle tek bir fonksiyon alır ve sonucu döndürür. Yukarıdan aşağıya okuma, yürütme sırasıyla eşleşir.

const pipe2 = <A, B>(a: A, f: (a: A) => B): B => f(a);
console.log(pipe2(5, n => n + 1)); // 6

Birden Çok Fonksiyondan Geçirme

Üç bağımsız değişken alan bir işlem hattı, fonksiyonları sırayla uygular. Her adımın çıktısı, sonraki adımın girdisi olur.

function pipe<A, B, C>(a: A, f: (a: A) => B, g: (b: B) => C): C {
  return g(f(a));
}
const inc = (n: number) => n + 1;
const dbl = (n: number) => n * 2;
console.log(pipe(5, inc, dbl)); // 12

Soldan Sağa Okuma

compose işlevinden farklı olarak pipe, adımları çalıştırıldıkları sırayla listeler. pipe(5, inc, dbl), tam olarak yazıldığı gibi önce artırır, sonra ikiyle çarpar.

console.log(pipe(5, dbl, inc)); // 11 (double then inc)

Aşırı Yüklemeler Neden Gereklidir

Farklı çağrı noktaları farklı sayıda fonksiyon aktarır. Her parametre sayısını kesin biçimde tiplemek için pipe, desteklenen her uzunluk için bir tane olmak üzere aşırı yükleme imzaları kullanır.

function pipe<A, B>(a: A, f: (a: A) => B): B;
function pipe<A, B, C>(a: A, f: (a: A) => B, g: (b: B) => C): C;
function pipe(a: unknown, ...fns: Function[]): unknown {
  return fns.reduce((v, fn) => fn(v), a);
}

Her Aşırı Yükleme Türleri Zincirler

İki işlevli aşırı yükleme A -> B zincirini, üç işlevli aşırı yükleme ise A -> B -> C zincirini oluşturur. Derleyici, aktardığınız fonksiyon sayısına göre eşleşen aşırı yüklemeyi seçer.

Çalışma Zamanındaki Gerçekleme

Aşırı yüklemelerin altında tek bir reduce, her fonksiyonu sırayla uygular. Gerçekleme imzası gevşek türler kullanırken çağıranlar kesin aşırı yüklemeleri görür.

function pipe(a: any, ...fns: Array<(x: any) => any>): any {
  return fns.reduce((acc, fn) => fn(acc), a);
}
console.log(pipe("  hi ", s => s.trim(), s => s.toUpperCase())); // HI

İşlem Hattı Boyunca Tür Değişiklikleri

Her aşırı yükleme genel türleri zincirlediği için bir işlem hattı, tamamen tür denetiminden geçmeye devam ederken bir değeri çeşitli türlerden geçirebilir.

const out = pipe("hello", s => s.length, n => n > 3);
console.log(out); // true (string -> number -> boolean)

flow: Değer Almayan İşlem Hattı

flow, işlem hattına benzer; ancak yalnızca fonksiyonları alır ve yeni bir fonksiyon döndürür. Değeri daha sonra sağlayabilirsiniz; bu, yeniden kullanım için çok uygundur.

const flow = <A, B, C>(f: (a: A) => B, g: (b: B) => C) =>
  (a: A): C => g(f(a));
const process = flow((n: number) => n + 1, (n: number) => n * 2);
console.log(process(5)); // 12

İşlem Hattı, flow ve compose Karşılaştırması

pipe, fonksiyonları bir değere soldan sağa uygular; flow, yeniden kullanılabilir soldan sağa bir fonksiyon oluşturur; compose ise sağdan sola bir fonksiyon oluşturur. Seçiminizi okuma sırasına ve yeniden kullanım gereksinimine göre yapın.

Pratik İşlem Hatları

fp-ts ve Effect gibi kitaplıklar, çok sayıda aşırı yüklemeye sahip sağlam ve türleri bütünüyle belirtilmiş bir pipe sağlar. Küçük bir işlem hattını kendiniz oluşturmak, tiplemenin tam olarak nasıl çalıştığını gösterir.

Kısa Kontrol

Bu ders için kısa bir kontrol.

Özet

pipe(x, f, g) = g(f(x)) soldan sağa çalışır ve her parametre sayısını kesin biçimde tiplemek için aşırı yükleme imzaları kullanır; bunun arkasında tek bir reduce gerçekleməsi bulunur. flow, yeniden kullanılabilir bir fonksiyon döndüren noktasız varyanttır.

Sıkça Sorulan Sorular

“Türleri Belirlenmiş pipe ve flow Yardımcıları” dersi ücretsiz mi?

Evet — “Türleri Belirlenmiş pipe ve flow Yardımcıları” 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ürleri Belirlenmiş pipe ve flow Yardımcıları” dersinde ne öğreneceğim?

Doğru çıkarımlarla soldan sağa işlem hatları oluşturun. 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.

“Türleri Belirlenmiş pipe ve flow Yardımcıları” 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. Saf İşlevler ve Değişmezlik
  2. Kısmi Uygulama ve Curry
  3. Türlerle İşlev Birleştirme
  4. Türleri Belirlenmiş pipe ve flow Yardımcıları
← TypeScript Academy Sayfasına Dön