0Pricing
TypeScript Academy · Ders

Result Türlerini Modelleme

Başarıyı ve başarısızlığı Result ile veri olarak temsil edin.

Result Türlerini Modelleme, 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.

Sonuç Türü

Sonuç, bir işlemin ya bir değerle başarılı olmasını ya da bir hatayla başarısız olmasını modeller; istisna fırlatmak yerine döndürebileceğiniz ayırt edici bir birleşimdir.

Sonuç Tanımlama

Klasik yapı, ok ayırt edici alanını kullanır. ok doğru olduğunda bir value, yanlış olduğunda ise bir error bulunur.

type Result<T, E> =
  | { ok: true; value: T }
  | { ok: false; error: E };

Oluşturucu Yardımcıları

Küçük ok ve err yardımcıları, her seferinde nesne sabitlerini elle yazmak yerine sonuçları kısa ve okunabilir biçimde oluşturmanızı sağlar.

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

Sonuç Döndürme

Hata verebilen bir işlev ok(value) veya err(error) döndürür. Dönüş türü, her çağırana iki olasılığı da bildirir.

function divide(a: number, b: number): Result<number, string> {
  return b === 0 ? err("divide by zero") : ok(a / b);
}

ok Durumuna Göre Tür Daraltma

result.ok kontrolü birleşim türünü daraltır. Doğru dalın içinde TypeScript, value değerinin var olduğunu; yanlış dalın içinde ise error değerinin var olduğunu bilir.

const r = divide(10, 2);
if (r.ok) console.log(r.value); // 5
else console.log(r.error);

Ayırt Edici Alan Güvenliği Yönlendirir

ok alanı, derleyicinin doğru dalı seçmesini sağlayan ayırt edici alandır. Önce ok değerinin doğru olduğunu kanıtlamadan value değerine erişemezsiniz.

const r = divide(1, 0);
// r.value here is a type error until we check r.ok
if (!r.ok) console.log("err:", r.error);

Türü Belirlenmiş Hatalar

Hatalar dizelerden daha zengin olabilir. Türü belirlenmiş bir hata birleşimi kullanmak, çağıranların türü daralttıktan sonra her türü kesin olarak ele almasını sağlar.

type DivErr = { kind: "zero" } | { kind: "overflow" };
function div(a: number, b: number): Result<number, DivErr> {
  if (b === 0) return err({ kind: "zero" });
  return ok(a / b);
}

Eksiksiz Hata İşleme

Hata türü bir birleşim olduğundan, ayırt edici alanı kullanan bir switch ifadesinin tüm durumları ele alıp almadığı denetlenebilir; böylece her başarısızlık biçiminin işlendiğinden emin olunur.

const r = div(1, 0);
if (!r.ok) {
  switch (r.error.kind) {
    case "zero": console.log("no zero"); break;
    case "overflow": console.log("too big"); break;
  }
}

Varsayılan Değer Yardımcısı

Bazen yalnızca değeri veya bir yedek değeri istersiniz. Küçük bir unwrapOr, okunaklı bir kullanım sunar ve başarısızlık işlemesini yerel tutar.

function unwrapOr<T, E>(r: Result<T, E>, fallback: T): T {
  return r.ok ? r.value : fallback;
}
console.log(unwrapOr(divide(1, 0), -1)); // -1

Sonuç ve İstisna Fırlatma Karşılaştırması

Result, başarısızlığı dönüş türüne taşır; böylece çağıranlar bununla ilgilenmek zorunda kalır. Bunun karşılığında daha açık bir kod gerekir ve beklenen hatalar için bu genellikle buna değer.

Eksiksiz Bir Örnek

Hepsini bir araya getirelim: yardımcıları tanımlayın, sonuçları döndürün ve kullanmadan önce türü daraltın. Derleyici, hata dalının ele alındığını garanti eder.

function safeParse(s: string): Result<number, string> {
  const n = Number(s);
  return Number.isNaN(n) ? err("NaN") : ok(n);
}
const p = safeParse("42");
console.log(p.ok ? p.value : p.error); // 42

Hızlı Kontrol

Bu dersle ilgili hızlı bir kontrol.

Özet

Sonuç<T, E>, { ok: true; value } veya { ok: false; error } biçiminde bir ayırt edici birleşimdir. Bunu ok/err yardımcılarıyla oluşturun ve ok alanına göre türü daraltarak value veya error değerine güvenli biçimde erişin; türü belirlenmiş hatalar tüm durumların eksiksiz işlenmesini sağlar.

Sıkça Sorulan Sorular

“Result Türlerini Modelleme” dersi ücretsiz mi?

Evet — “Result Türlerini Modelleme” 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.

“Result Türlerini Modelleme” dersinde ne öğreneceğim?

Başarıyı ve başarısızlığı Result ile veri olarak temsil edin. 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.

“Result Türlerini Modelleme” 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