0Pricing
TypeScript Academy · Ders

Değişmezleri Birleşimlerde Birleştirme

Değişmez türleri birleştirerek sonlu değer kümeleri oluşturun.

Değişmezleri Birleşimlerde Birleştirme, 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.

Literal Türlerin Birleşimleri

Literal birleşimi, bir değerin bilinen birkaç seçenekten tam olarak biri olması gerektiğini modeller. Durum makinelerinin, enum'ların ve türleri doğru belirlenmiş API'lerin temelini oluşturur.

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

let state: Status = 'idle';
state = 'loading';
console.log('State:', state);

Literal Birleşimi Üzerinde Geçiş Yapma

Bir literal birleşimi üzerinde switch kullanmak okunaklıdır ve derleyici her durumun izin verilen değerlerden biri olduğunu bilir. Bu, tüm durumları kapsama denetimleriyle mükemmel biçimde birlikte çalışır.

type Status = 'idle' | 'loading' | 'done';

function label(s: Status): string {
  switch (s) {
    case 'idle': return 'Waiting';
    case 'loading': return 'Working';
    case 'done': return 'Finished';
  }
}
console.log(label('loading'));

Tüm Durumları Kapsama

Bir birleşimin her üyesini ele almaya tüm durumları kapsayan işleme denir. Tüm durumları kapsadığınızda TypeScript, eksik dal olmadan işlevin her zaman geri döndüğünü kanıtlayabilir.

type Dir = 'left' | 'right';

function step(d: Dir): number {
  if (d === 'left') return -1;
  return 1; // only 'right' remains
}
console.log(step('left'), step('right'));

never ile Tüm Durumları Kapsama Tekniği

Varsayılan dalda değeri bir never değişkenine atamak, yeni bir birleşim üyesi ekleyip onu ele almayı unutursanız derleme hatası oluşmasını zorunlu kılar. Bu, gelişen kod için bir güvenlik ağıdır.

type Shape = 'circle' | 'square';

function area(s: Shape): string {
  switch (s) {
    case 'circle': return 'pi r^2';
    case 'square': return 'a^2';
    default:
      const _exhaustive: never = s;
      return _exhaustive;
  }
}
console.log(area('circle'));

Const Nesnelerinden Birleşim Türetme

Yaygın bir kalıp, değerleri bir const nesnesinde tutmak ve typeof obj[keyof typeof obj] kullanarak birleşimi bu değerlerden türetmektir. Tek doğruluk kaynağı, iki çıktı.

const Colors = { Red: 'red', Blue: 'blue' } as const;
type Color = typeof Colors[keyof typeof Colors];
// 'red' | 'blue'
const c: Color = Colors.Blue;
console.log(c);

Anahtarlardan Birleşim Türetme

Anahtarların birleşimini keyof typeof obj ile de türetebilirsiniz. Bu, anahtarların kendisi anlamlı tanımlayıcılar olduğunda kullanışlıdır.

const ICONS = { home: 0, search: 1, profile: 2 } as const;
type IconName = keyof typeof ICONS;
// 'home' | 'search' | 'profile'
const name: IconName = 'search';
console.log(name, ICONS[name]);

Literal Etiketlerle Ayırt Edilmiş Birleşimler

Her nesne çeşidine literal bir etiket özelliği eklediğinizde TypeScript bunları birbirinden ayırt edebilir. Etiketi denetlemek, türü tam biçime daraltır.

type Action =
  | { type: 'add'; amount: number }
  | { type: 'reset' };

function reduce(a: Action): number {
  if (a.type === 'add') return a.amount;
  return 0;
}
console.log(reduce({ type: 'add', amount: 5 }));

Ayırt Ediciye Göre Daraltma

Literal ayırt ediciyi sınadığınızda derleyici hangi çeşide sahip olduğunuzu bilir; böylece o çeşide özgü alanlara tür dönüştürmeleri olmadan güvenle erişebilirsiniz.

type Event =
  | { kind: 'click'; x: number; y: number }
  | { kind: 'key'; code: string };

function handle(e: Event): string {
  if (e.kind === 'key') return 'Key ' + e.code;
  return 'Click ' + e.x + ',' + e.y;
}
console.log(handle({ kind: 'key', code: 'Esc' }));

Birden Çok Birleşimi Birleştirme

Daha büyük birleşimleri daha küçük, adlandırılmış birleşimlerden oluşturabilirsiniz. Bu, ilişkili seçenekleri kod tabanınız genelinde gruplu ve yeniden kullanılabilir tutar.

type Primary = 'red' | 'blue' | 'yellow';
type Secondary = 'green' | 'orange';
type Color = Primary | Secondary;

const c: Color = 'green';
console.log(c);

İşlev Kısıtlamaları Olarak Birleşimler

Bir işlev parametresine literal birleşimi vermek, çağıranları geçerli seçeneklerle sınırlar ve düzenleyicide otomatik tamamlama sağlar. Güvenlik ile keşfedilebilirliği bir araya getirmek kolay kolay aşılmaz.

type Align = 'left' | 'center' | 'right';

function setAlign(a: Align): void {
  console.log('Aligned', a);
}
setAlign('center');
// setAlign('top'); // Error

Literal Birleşimleri Dizgelerden Daha İyi Kılan Nedir

Düz bir string parametresi kullanmak, yazım hataları da dâhil olmak üzere her değeri kabul eder. Literal birleşimi hataları derleme zamanında yakalar ve geçerli seçenekleri belgeler; bu, bakımı kolay kod için açık bir ilerlemedir.

type Method = 'GET' | 'POST' | 'PUT' | 'DELETE';

function request(m: Method, url: string): void {
  console.log(m, url);
}
request('POST', '/api/users');

Kısa Kontrol

Literal birleşimleri konusundaki anlayışınızı sınayın.

Özet: Literalleri Birleştirme

Şunları yapmayı öğrendiniz:

  • Sınırlı seçenek kümeleri için literal birleşimleri oluşturmak.
  • Güvenlik için never tekniğini kullanarak bunları tüm durumları kapsayacak şekilde ele almak.
  • keyof typeof ve typeof obj[keyof typeof obj] aracılığıyla const nesnelerinden birleşimler türetmek.
  • Literal etiket özellikleriyle çeşitleri birbirinden ayırt etmek.

Sıradaki kurs: özel unknown, never ve void türleri.

const ROUTES = { home: '/', about: '/about' } as const;
type Route = typeof ROUTES[keyof typeof ROUTES];
const r: Route = '/about';
console.log(r);

Sıkça Sorulan Sorular

“Değişmezleri Birleşimlerde Birleştirme” dersi ücretsiz mi?

Evet — “Değişmezleri Birleşimlerde Birleştirme” 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.

“Değişmezleri Birleşimlerde Birleştirme” dersinde ne öğreneceğim?

Değişmez türleri birleştirerek sonlu değer kümeleri 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 4. dersidir.

“Değişmezleri Birleşimlerde Birleştirme” 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. Dize ve Sayısal Değişmez Türleri
  2. Doğru/Yanlış Değişmezleri ve Değişmez Çıkarımı
  3. as const ile const Bildirimleri
  4. Değişmezleri Birleşimlerde Birleştirme
← TypeScript Academy Sayfasına Dön