React Academy · Ders

React'te Koşullu ve Eşlenmiş Türler

Koşullu türleri kullanarak diğer prop değerlerine göre biçimi değişen bileşen prop türleri oluşturun.

2. ders / 413 adım

React'te Koşullu ve Eşlenmiş Türler, CoddyKit'te ücretsiz bir React 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, React Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. React Academy kursu toplamda 4 dersten oluşur.

Koşullu Türlerin Temelleri

Koşullu türler T extends U ? X : Y söz dizimini kullanır — T, U'ya atanabiliyorsa tür X'e, aksi takdirde Y'ye çözümlenir.

type IsString<T> = T extends string ? true : false;

type A = IsString<string>;  // true
type B = IsString<number>;  // false
type C = IsString<'hello'>; // true

Diğer Özelliklere Göre Koşullu Özellikler

Bir özelliği başka bir özelliğin değerine göre zorunlu veya isteğe bağlı hâle getirmek için koşullu türleri kullanın.

type InputProps<T extends 'text' | 'number'> = {
  type: T;
} & (T extends 'number' ? { min?: number; max?: number } : { maxLength?: number });

const numInput: InputProps<'number'> = { type: 'number', min: 0, max: 100 };
const txtInput: InputProps<'text'> = { type: 'text', maxLength: 50 };

Eşlenmiş Türler

Eşlenmiş türler, mevcut bir türün her özelliğini dönüştürerek yeni bir tür oluşturur. in keyof söz dizimi tüm anahtarlar üzerinde yineler.

type Optional<T> = { [K in keyof T]?: T[K] };
type Readonly<T> = { readonly [K in keyof T]: T[K] };
type Nullable<T> = { [K in keyof T]: T[K] | null };

Güncelleme Formları için Özellikleri İsteğe Bağlı Hâle Getirme

Tüm alanların zorunlu olmadığı güncelleme formu özellikleri için Partial<T> (yerleşik bir eşlenmiş tür) kullanın.

interface User { id: string; name: string; email: string; role: string; }

// Update form — all fields optional:
type UserUpdateProps = Partial<Omit<User, 'id'>>;

function UserUpdateForm(props: UserUpdateProps) {
  // name, email, role are all optional
}

Eşlenmiş Türlerle Record

Anahtarları bir birleşimden gelen ve değerleri tutarlı bir biçime sahip arama türleri oluşturun.

type Status = 'idle' | 'loading' | 'success' | 'error';

type StatusConfig = Record<Status, {
  label: string;
  icon: React.ReactNode;
  color: string;
}>;

const statusConfig: StatusConfig = {
  idle: { label: 'Ready', icon: <ReadyIcon />, color: 'gray' },
  loading: { label: 'Loading...', icon: <Spinner />, color: 'blue' },
  success: { label: 'Done', icon: <CheckIcon />, color: 'green' },
  error: { label: 'Error', icon: <XIcon />, color: 'red' },
};

Zorunlu Anahtarları Seçme

Bir türün yalnızca zorunlu anahtarlarını çıkarmak için -? (isteğe bağlıyı kaldırır) ile koşullu türleri kullanın.

type RequiredKeys<T> = {
  [K in keyof T]-?: undefined extends T[K] ? never : K;
}[keyof T];

interface FormData { name: string; email: string; phone?: string; }
type Required = RequiredKeys<FormData>; // 'name' | 'email'

Şablon Dize Türleri

Şablon dize türleri, dize sabiti türlerini birleştirerek tür denetimli olay adları, CSS sınıf dizeleri ve API yolları oluşturmayı sağlar.

type EventName = 'click' | 'change' | 'focus';
type HandlerName = `on${Capitalize<EventName>}`;
// 'onClick' | 'onChange' | 'onFocus'

type ApiPath<R extends string> = `/api/${R}`;
type UserPath = ApiPath<'users'>; // '/api/users'

Özellikleri Koşullu Olarak Çıkarma

Birleşim türlerini filtrelemek için Extract ve Exclude kullanın.

type AllProps = 'onClick' | 'onHover' | 'onChange' | 'style';
type EventHandlers = Extract<AllProps, `on${string}`>;
// 'onClick' | 'onHover' | 'onChange'

type NonEventProps = Exclude<AllProps, `on${string}`>;
// 'style'

Form Doğrulaması için Eşlenmiş Türler

Form verilerinizin biçimini yansıtan doğrulama hata türleri oluşturun — her alan için bir hata iletisi dizesi.

interface LoginForm { email: string; password: string; }

type FormErrors<T> = { [K in keyof T]?: string };
type LoginErrors = FormErrors<LoginForm>;
// { email?: string; password?: string }

const errors: LoginErrors = { email: 'Invalid email format' };

Ayırt Edici Eşlenmiş Türler

Ayırt ediciye göre biçim değiştiren türler oluşturmak için eşlenmiş türleri koşullu türlerle birleştirin.

type EventMap = {
  click: { x: number; y: number };
  keydown: { key: string; code: string };
  resize: { width: number; height: number };
};

type Handler<E extends keyof EventMap> = (event: EventMap[E]) => void;

function on<E extends keyof EventMap>(event: E, handler: Handler<E>) {
  window.addEventListener(event, handler as EventListener);
}

Türleri Gereğinden Fazla Mühendislikten Geçirmemek

Koşullu ve eşlenmiş türler güç kazandırır, ancak karmaşıklık da ekler. Bunları yalnızca gerçek yinelemeleri ortadan kaldırdıklarında veya gerçek hataları önlediklerinde kullanın; yalnızca TypeScript bilginizi göstermek için kullanmayın.

Kısa Kontrol

{ [K in keyof T]?: T[K] } eşlenmiş türü ne yapar?

Özet

Koşullu türler (T extends U ? X : Y), atanabilirliğe göre dallanan türler oluşturur. Eşlenmiş türler ([K in keyof T]), bir türün her özelliğini dönüştürür. Bunları kısmi güncelleme formu türleri, tür denetimli olay eşlemeleri, form hata biçimleri ve şablon dize API yolları için kullanın.

Başlamak ücretsiz

Yapay zeka eğitmeniyle React öğren — ücretsiz

Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.

Kurslar
88
Dersler
324

Sıkça Sorulan Sorular

“React'te Koşullu ve Eşlenmiş Türler” dersi ücretsiz mi?

Evet — “React'te Koşullu ve Eşlenmiş Türler” 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 React Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. React Academy kursu toplamda 4 dersten oluşur.

“React'te Koşullu ve Eşlenmiş Türler” dersinde ne öğreneceğim?

Koşullu türleri kullanarak diğer prop değerlerine göre biçimi değişen bileşen prop türleri oluşturun. React 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.

React Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te React 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.

“React'te Koşullu ve Eşlenmiş Türler” 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 React Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her React 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. Bileşen Varyantları için Ayırt Edici Birleşimler
  2. React'te Koşullu ve Eşlenmiş Türler
  3. 'as' Prop'lu Polimorfik Bileşenler
  4. Tür Güvenli Formlar ve API Yanıt Sözleşmeleri
← React Academy Sayfasına Dön