Ένα union (A | B) σημαίνει "είτε A ή B." Ένα intersection (A & B) σημαίνει "τόσο A όσο B ταυτόχρονα."
ts
= | | ;
: = ;
() { }
Ένα union (A | B) σημαίνει "είτε A ή B." Ένα intersection (A & B) σημαίνει "τόσο A όσο B ταυτόχρονα."
= | | ;
: = ;
() { }
function format(x: string | number) {
// x.toFixed(2); // ❌ toFixed doesn't exist on string
if (typeof x === "number") return x.toFixed(2); // ✅ narrowed to number
return x.toUpperCase(); // ✅ here it's a string
}
Μέχρι να περιορίσετε ένα union, μπορείτε να έχετε πρόσβαση μόνο σε μέλη που υπάρχουν σε κάθε μέλος του union — ο μεταγλωττιστής σας προστατεύει.
type Name = { name: string };
type Age = { age: number };
type Person = Name & Age; // must have BOTH name and age
const p: Person = { name: "Ann", age: 30 }; // both required
Tα intersections είναι χαρακτηριστικά για σύνθεση/ανάμειξη τύπων αντικειμένων (π.χ. προσθήκη props σε ένα υπάρχον τύπο).
Τα unions μοντελοποιούν "μία από πολλές δυνατότητες" — το θεμέλιο ασφαλούς μοντελοποίησης κατάστασης (π.χ. discriminated unions για κατάσταση reducer), υπερφόρτωση συναρτήσεων και nullable τύπους (T | null).
Τα intersections συνθέτουν τύπους μαζί.
Μαζί κάνουν το σύστημα τύπων του TypeScript αρκετά εκφραστικό ώστε να αντικατοπτρίζει με ακρίβεια τα πραγματικά δεδομένα.