0Pricing
TypeScript Academy · Ders

Demiryolu Odaklı Programlama

try/catch kullanmadan başarısız olabilecek işlemleri zincirleyin.

Demiryolu Odaklı Programlama, 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.

Demiryolu Benzetmesi

Demiryolu odaklı programlama, bir hesaplamayı iki paralel hat olarak gösterir: başarı hattı ve başarısızlık hattı. Başarısızlığa geçtiğinizde orada kalır, geri kalanını atlarsınız.

Sonuç İşlevlerini Zincirleme

Her adım bir değer alır ve bir Result döndürür. İlk başarısızlığın zinciri kısa devreye uğratıp sonuna kadar taşınması için adımları birbirine bağlamak isteriz.

type Result<T, E> = { ok: true; value: T } | { ok: false; error: E };
const ok = <T>(value: T): Result<T, never> => ({ ok: true, value });
const err = <E>(error: E): Result<never, E> => ({ ok: false, error });

map: Başarı Değerini Dönüştürme

map, Sonuç başarılı olduğunda değere sıradan bir işlev uygular ve başarısızlıkları değiştirmeden aktarır. Başarı hattında kalır.

function map<T, U, E>(r: Result<T, E>, f: (t: T) => U): Result<U, E> {
  return r.ok ? ok(f(r.value)) : r;
}
console.log(map(ok(2), n => n + 1)); // { ok: true, value: 3 }

flatMap: Hata Verebilen Adımları Zincirleme

Sonraki adımın kendisi bir Sonuç döndürdüğünde flatMap (diğer adıyla andThen) kullanın. Sonuçların iç içe geçmesini önler ve başarısızlıkta kısa devre yapar.

function flatMap<T, U, E>(r: Result<T, E>, f: (t: T) => Result<U, E>): Result<U, E> {
  return r.ok ? f(r.value) : r;
}

Neden flatMap Değil map

Sonuç döndüren bir işlevle map kullansaydınız Result<Result<U,E>,E> elde ederdiniz. flatMap bunu bir düzeyde düzleştirerek tek bir Sonuç tutulmasını sağlar.

İlk Hatada Kısa Devre

Bir adım err döndürür döndürmez sonraki tüm flatMap çağrıları bunu değiştirmeden aktarır. Başarısızlık hattına geçmeye benzer biçimde kalan adımlar hiç çalışmaz.

const start = err("boom") as Result<number, string>;
const out = flatMap(start, n => ok(n + 1));
console.log(out); // { ok: false, error: "boom" }

İşlem Hattı Oluşturma

Her biri bir Sonuç döndüren doğrulama adımlarını birleştirin. İlk başarısızlık işlem hattının sonucu olur; hepsi başarılı olursa başarı değeri sonuna kadar ilerler.

function parseNum(s: string): Result<number, string> {
  const n = Number(s);
  return Number.isNaN(n) ? err("not a number") : ok(n);
}
function positive(n: number): Result<number, string> {
  return n > 0 ? ok(n) : err("must be positive");
}

İşlem Hattını Çalıştırma

flatMap çağrılarını zincirlemek, değeri hata verebilen her adımdan geçirir. Herhangi bir yerdeki başarısızlık zinciri durdurur ve ilgili hatayı ortaya çıkarır.

const good = flatMap(parseNum("5"), positive);
console.log(good); // { ok: true, value: 5 }
const bad = flatMap(parseNum("-3"), positive);
console.log(bad); // { ok: false, error: "must be positive" }

map ve flatMap'i Birlikte Kullanma

Başarısız olabilecek adımlar için flatMap, saf dönüşümler için map kullanın. Birlikte, normal akışı doğrusal, hataları ise otomatik tutarlar.

const result = map(flatMap(parseNum("10"), positive), n => n * 2);
console.log(result); // { ok: true, value: 20 }

İstisna Yakalama Gerekmez

İşlem hattının tamamı başarıyı ve başarısızlığı değerler aracılığıyla ifade eder. try/catch yoktur ve her adımın türü hata yolunu açık ve kaçınılmaz hale getirir.

Neden Ölçeklenir

Demiryolu odaklı kod, karmaşık iş akışlarını okunabilir tutar: her adım küçük ve saftır, hatalar otomatik olarak yayılır ve bir adım eklemek mevcut hata işlemesini karmaşıklaştırmaz.

Hızlı Kontrol

Bu dersle ilgili hızlı bir kontrol.

Özet

Demiryolu odaklı programlama, Result döndüren adımları map (başarıyı dönüştürme) ve flatMap/andThen (hata verebilen adımları zincirleme ve iç içe Sonuçları düzleştirme) ile birbirine bağlar. İlk err geri kalanını kısa devreye uğratır ve try/catch olmadan sonuna kadar yayılır.

Sıkça Sorulan Sorular

“Demiryolu Odaklı Programlama” dersi ücretsiz mi?

Evet — “Demiryolu Odaklı Programlama” 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.

“Demiryolu Odaklı Programlama” dersinde ne öğreneceğim?

try/catch kullanmadan başarısız olabilecek işlemleri zincirleyin. 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.

“Demiryolu Odaklı Programlama” 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. Hata Fırlatmanın Sorunu
  2. Result Türlerini Modelleme
  3. Option ve Maybe Türleri
  4. Demiryolu Odaklı Programlama
← TypeScript Academy Sayfasına Dön