CodeBlanks Logo Icon CodeBlanks

Özet - Union & intersection

Union ve intersection'ı birleştirerek bir ödeme modeli yazarsın.

Union ve intersection birlikte

Union ve intersection'ı birleştirerek karmaşık modeller kurabilirsin. Parantez ile öncelik belirlenir: önce union, sonra intersection uygulanır.

interface Identifiable { id: string; }
interface CashPay { method: "cash"; amount: number; }
interface CardPay { method: "card"; cardNumber: string; }
type Payment = (CashPay | CardPay) & Identifiable;

const p: Payment = { id: "p1", method: "cash", amount: 100 };

Her ödeme bir kimliğe sahiptir ve nakit ya da kart olabilir.

Uygulama Ödeme modeli kur

Identifiable arayüzünü id: string ile tanımla. CashPay arayüzünü method: "cash" ve amount: number ile tanımla. CardPay arayüzünü method: "card" ve cardNumber: string ile tanımla. Payment türünü (CashPay | CardPay) & Identifiable olarak tanımla. handlePayment(p: Payment): string fonksiyonu p.id + ":" + p.method döndürsün ve sonucu yazdır.

Başlangıç kodu

index.ts
// Identifiable arayüzünü tanımla: id: string
// CashPay arayüzünü tanımla: method cash, amount: number
// CardPay arayüzünü tanımla: method card, cardNumber: string
// Payment = (CashPay | CardPay) & Identifiable
// handlePayment(p: Payment): string döndürür, id ve method arasına iki nokta koy

Örnek çözüm

index.ts
interface Identifiable { id: string; }
interface CashPay { method: "cash"; amount: number; }
interface CardPay { method: "card"; cardNumber: string; }
type Payment = (CashPay | CardPay) & Identifiable;

function handlePayment(p: Payment): string {
  return p.id + ":" + p.method;
}

const payment: Payment = { id: "p1", method: "cash", amount: 100 };
console.log(handlePayment(payment));

Beklenen çıktı

p1:cash

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Aşağıdaki type X tanımlarından hangisi hem union hem intersection kullanır?

  • type X = A;
  • type X = A | B;
  • type X = (A | B) & C; Doğru cevap
  • type X = A & B;

Açıklama: Parantez içindeki A | B union'dur; dışarıdaki & C intersection'dır. Bu tanım her iki kavramı birlikte kullanır.

2 Ödeme modelini tamamla

Soru
type Payment = (Cash | Card) ____ Identifiable;
Cevap
type Payment = (Cash | Card) & Identifiable;

Açıklama: Parantez içindeki union'ı Identifiable ile kesiştirmek için & gerekir. (Cash | Card) & Identifiable her ödemenin kimliği olduğunu ve nakit ya da kart olduğunu söyler.

3 Birleşik model parçaları

Kavram Anlamı
| Veya (or) tür operatörü
& Ve (and) tür operatörü
(A | B) & C Önce birleşim sonra kesişim
"cash" | "card" İki string literalın birleşimi

Başlangıç bölümündeki tüm dersler