Özet - Union & intersection
- TypeScript kursu
- Başlangıç
- Ders 62/89
- 4 dk
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
// 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
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
type Payment = (Cash | Card) ____ Identifiable;
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 |