0Pricing
TypeScript Academy · Ders

Hata Kanalları ve Bağımlılıklar

Türleri belirlenmiş hataları ve enjekte edilen bağımlılıkları etkiler içinde izleyin.

Hata Kanalları ve Bağımlılıklar, 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.

Hata Kanalları ve Bağımlılıklar

Effect'i güçlü kılan iki kanal vardır: türü belirtilmiş hata kanalı (E) ve gereksinimler kanalı (R). Bu derste türü belirtilmiş hatalarla nasıl başarısız olunacağını ve Context ile Layer üzerinden bağımlılıkların nasıl sağlanacağını göreceksiniz.

Effect.fail ile Türü Belirtilmiş Hatalar

Effect.fail bir değeri hata kanalına yerleştirir. Etiketlenmiş sınıflar, hataların ayırt edilmesini kolaylaştırır.

import { Effect } from "effect";

class NotFound { readonly _tag = "NotFound"; }
class Forbidden { readonly _tag = "Forbidden"; }

const load = Effect.fail(new NotFound());
// Effect<never, NotFound, never>

Birleştirdikçe Hatalar Birleşir

Farklı hatalara sahip etkileri sıraya koyduğunuzda, bu hatalar E kanalında birleşir; böylece tür, her başarısızlık durumunu listeler.

// Effect<A, NotFound, never> then Effect<B, Forbidden, never>
// => Effect<B, NotFound | Forbidden, never>

Hataları Ele Alma

Effect.catchAll veya catchTag hataları ele alır; onları kanaldan kaldırır (veya yerlerine yenilerini koyar). NotFound hatasını ele almak, E kanalını daraltır.

import { Effect, pipe } from "effect";

const safe = pipe(
  Effect.fail(new NotFound()),
  Effect.catchTag("NotFound", () => Effect.succeed("default"))
);
// Effect<string, never, never> -- error handled

Kurtarma ve Yayma

Bir hatayı ele almazsanız hata E'de kalır ve çağırana yayılır; çağıran da hatayı ele almalı veya yeniden yaymalıdır. Derleyici, hataların hiçbir zaman sessizce kaybolmamasını sağlar.

Bağımlılık Tanımlama

Bir hizmet, Context.Tag olarak tanımlanır. Bu hizmeti kullanan etkiler, R kanallarına hizmeti gereksinim olarak ekler.

import { Context, Effect } from "effect";

class Random extends Context.Tag("Random")<
  Random,
  { readonly next: Effect.Effect<number> }
>() {}

const program = Effect.gen(function* () {
  const random = yield* Random;
  return yield* random.next;
});
// Effect<number, never, Random>

Gereksinimler Türde Görünür

R kanalının artık Random içerdiğine dikkat edin. Etki, bu gereksinim karşılanana kadar çalışamaz; derleyici bunu zorunlu kılar.

Layer ile Sağlama

Bir Layer, bir hizmetin nasıl oluşturulacağını açıklar. Bir katman sağlamak, gereksinimi karşılar ve onu R kanalından kaldırır.

import { Effect, Layer } from "effect";

const RandomLive = Layer.succeed(Random, {
  next: Effect.sync(() => Math.random()),
});

const runnable = Effect.provide(program, RandomLive);
// Effect<number, never, never> -- R cleared

Katmanlar Birleşir

Katmanlar başka katmanlara bağlı olabilir ve birlikte birleştirilerek eksiksiz bir bağımlılık grafiği oluşturabilir. Effect, türlerine göre bunları doğru sırayla birbirine bağlar.

import { Layer } from "effect";
// Layer.merge(DatabaseLive, LoggerLive)
// Layer that provides both services

Katmanları Değiştirerek Sınama

Bağımlılıklar açıkça belirtildiği için sınamalar, sınanan programa dokunmadan farklı bir katman (ör. belirlenebilir bir Random) sağlayabilir. Bu, gereksinimleri izlemenin önemli bir yararıdır.

import { Layer, Effect } from "effect";

const RandomTest = Layer.succeed(Random, {
  next: Effect.succeed(0.5),
});
// Effect.provide(program, RandomTest) -> deterministic

Bunun Önemi

Hata ve gereksinim kanalları, görünmez varsayımları derleyici tarafından denetlenen sözleşmelere dönüştürür: her hata ele alınmalı veya bildirilmelidir ve her bağımlılık sağlanmalıdır. Effect programlarını sağlam ve sınanabilir kılan şey budur.

Kısa Kontrol

Hata kanalları ve bağımlılıklar konusundaki anlayışınızı doğrulayın.

Özet

Hata kanalı, birleştirme sırasında birleşen türü belirtilmiş başarısızlıkları (Effect.fail, catchTag/catchAll ile daraltılır) izlerken gereksinimler kanalı, Context.Tag ile tanımlanan ve Effect.provide aracılığıyla Layer'lar tarafından karşılanan hizmetleri izler. Bu ikisi birlikte hataların ve bağımlılıkların derleyici tarafından denetlenmesini, katmanları değiştirerek de sınamaların kolaylaşmasını sağlar.

Sıkça Sorulan Sorular

“Hata Kanalları ve Bağımlılıklar” dersi ücretsiz mi?

Evet — “Hata Kanalları ve Bağımlılıklar” 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.

“Hata Kanalları ve Bağımlılıklar” dersinde ne öğreneceğim?

Türleri belirlenmiş hataları ve enjekte edilen bağımlılıkları etkiler içinde izleyin. 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.

“Hata Kanalları ve Bağımlılıklar” 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. Etki Sistemleri Neden Önemlidir?
  2. Effect Türü
  3. Etkileri Birleştirme
  4. Hata Kanalları ve Bağımlılıklar
← TypeScript Academy Sayfasına Dön