0Pricing
TypeScript Academy · Ders

DeepPartial ve DeepReadonly

Partial ve Readonly türlerinin yinelemeli sürümlerini oluşturun

DeepPartial ve DeepReadonly, CoddyKit'te ücretsiz bir TypeScript Academy dersidir. Bu, 4 dersinin 1. 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.

Derin Yardımcı Türler Neden Gerekli?

Yerleşik Partial ve Readonly yalnızca bir düzey derinlikte uygulanır. İç içe nesneler için özyinelemeli sürümlere ihtiyacınız vardır.

interface Config {
  db: { host: string; port: number };
  app: { name: string };
}
type Shallow = Partial<Config>;
// Shallow.db is still required — only top level is optional

DeepPartial Uygulama

Nesne özellikleri üzerinde özyinelemeli olarak eşleme yapın; her birini isteğe bağlı hâle getirin ve özellik değerinin bir nesne olması durumunda DeepPartial uygulamasını özyinelemeli olarak sürdürün.

type DeepPartial<T> = T extends object
  ? { [K in keyof T]?: DeepPartial<T[K]> }
  : T;

DeepPartial Uygulamada

DeepPartial uygulamasını iç içe bir yapılandırma türüne uygulayın ve tüm düzeylerin isteğe bağlı hâle geldiğini görün.

type PartialConfig = DeepPartial<Config>;
// PartialConfig.db?: { host?: string; port?: number }

const c: PartialConfig = { db: { host: "localhost" } };
// No error — all other fields are optional

DeepReadonly Uygulama

İç içe nesne türlerine özyinelemeli olarak girerek her derinlikteki her özelliği readonly yapın.

type DeepReadonly<T> = T extends object
  ? { readonly [K in keyof T]: DeepReadonly<T[K]> }
  : T;

DeepReadonly Uygulamada

Derinlemesine dondurulmuş bir yapılandırma hiçbir düzeyde değiştirilemez.

type ReadonlyConfig = DeepReadonly<Config>;
const cfg: ReadonlyConfig = { db: { host: "localhost", port: 5432 }, app: { name: "my-app" } };
// cfg.db.port = 3000; // Error: readonly

Derin Türlerde Dizileri Ele Alma

Diziler özel işlem gerektirir — dizileri düz nesneler olarak ele almak yerine öğe türlerini özyinelemeli olarak eşleyin.

type DeepPartial<T> =
  T extends (infer U)[]
    ? DeepPartial<U>[]
    : T extends object
      ? { [K in keyof T]?: DeepPartial<T[K]> }
      : T;

İlkel Türleri Ele Alma

Özyinelemenin temel durumu, ilkel türleri nesne eşlemeli bir tür içine sarmalamadan olduğu gibi döndürmelidir.

type DeepReadonly<T> =
  T extends string | number | boolean | null | undefined ? T
  : T extends (infer U)[] ? ReadonlyArray<DeepReadonly<U>>
  : { readonly [K in keyof T]: DeepReadonly<T[K]> };

DeepPartial ve DeepReadonly'ı Birleştirme

Güvenli yapılandırma yamalama işlemleri için ikisini birleştirerek derinlemesine kısmi ve salt okunur bir tür oluşturabilirsiniz.

type SafePatch<T> = DeepReadonly<DeepPartial<T>>;

Hız Açısından Dikkat Edilecekler

Çok büyük nesnelerdeki özyinelemeli türler, TypeScript tür denetimini yavaşlatabilir. Hızın kritik olduğu kodlar için derinlik sınırlarını veya tembel değerlendirmeyi değerlendirin.

// For very deep schemas, consider using Zod or io-ts
// which provide runtime + compile-time deep typing

Gerçek Dünya Kullanımı: React Durum Yamaları

DeepPartial, büyük bir durum nesnesinin yalnızca değişen alt kümesini kabul eden durum yaması işlevleri için idealdir.

function patch<T>(state: T, changes: DeepPartial<T>): T {
  return { ...state, ...changes } as T;
}

Özet: Derin Yardımcı Türler

DeepPartial ve DeepReadonly, değiştiricilerini iç içe bir nesnenin her düzeyine uygulayan özyinelemeli eşlemeli türlerdir. Dizileri ayrı ele alın ve ilkel türler için temel durumlar kullanın.

Hızlı Denetim

DeepPartial için doğru özyinelemeli temel durum nedir?

Öğrendikleriniz

Özyinelemeli eşlemeli türleri kullanarak DeepPartial ve DeepReadonly uyguladınız. Dizileri özel bir durum olarak ele alın ve temel durumda ilkel türleri her zaman değiştirmeden döndürün.

Sıkça Sorulan Sorular

“DeepPartial ve DeepReadonly” dersi ücretsiz mi?

Evet — “DeepPartial ve DeepReadonly” 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.

“DeepPartial ve DeepReadonly” dersinde ne öğreneceğim?

Partial ve Readonly türlerinin yinelemeli sürümlerini 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 1. dersidir.

“DeepPartial ve DeepReadonly” 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. DeepPartial ve DeepReadonly
  2. Flatten ve UnwrapPromise Yardımcıları
  3. TupleToUnion ve UnionToIntersection
  4. Bir Tür Yardımcı Kitaplığı Yayımlama
← TypeScript Academy Sayfasına Dön