Ο τελεστής 'satisfies' στο TypeScript

Επιβεβαιώστε ότι ο τύπος μιας έκφρασης ταιριάζει με κάποιον τύπο, χωρίς να αλλάξετε τον τύπο αυτής της έκφρασης που προκύπτει

Το TypeScript 4.9 ικανοποιεί

Με την έκδοση 4.9, το TypeScript εισάγει έναν νέο τελεστή που ονομάζεται "satisfies"-operator. Σκοπός του είναι να καταστήσει πιο ευέλικτα τα μη ομοιογενή σύνολα τύπων επιτρέποντας σε μια ένωση τύπων να ικανοποιήσει τον συνολικό τύπο.

Διορθώστε το σφάλμα τύπου με το Record<>

Το καλύτερο παράδειγμα για την επίδειξη αυτού του νέου τελεστή χρησιμοποιεί έναν τύπο "Εγγραφή", όπου οι τύποι των τιμών μπορεί να διαφέρουν.

type Keys = "alpha" | "beta" | "gamma";

const variants = {
  alpha: 0,
  beta: 1,
  gamma: "three"
} satisfies Record<Keys, string | number>;

// With the new 'satisfies'-operator,
// the types for each of the properties
// is correctly inferred.
const otherBeta = variants.beta + 10;
const gammeUppercase = variants.gamma.toUpperCase();

Όπως μπορείτε να δείτε, ο νέος κωδικός επιτρέπει να συμπεράνουμε σωστά τον έγκυρο τύπο για το δεδομένο κλειδί. Αυτό δεν θα ήταν δυνατό πριν από το TypeScript 4.9. Ο μεταγλωττιστής θα παραπονιόταν ότι η τιμή θα μπορούσε να είναι τύπου συμβολοσειράς ή αριθμού, ενώ τώρα ο μεταγλωττιστής συμπεραίνει σωστά τον συγκεκριμένο τύπο.

Περιορισμός ονόματος ιδιοκτησίας

Μπορούμε επίσης να χρησιμοποιήσουμε τον νέο τελεστή για να υποδείξουμε στον μεταγλωττιστή ότι είναι εντάξει για ένα σύνολο να περιλαμβάνει μόνο ορισμένα δεδομένα κλειδιά, αλλά να μην δέχεται άλλα.

type Keys = "alpha" | "beta" | "gamma";

const variants = {
    alpha: "value",
    beta: 0,
    // The compiler will show an error,
    // as 'delta' is not part of the keys.
    delta: new Date()
} satisfies Partial<Record<Keys, unknown>>;

Περισσότερα παραδείγματα

Για μια πλήρη λίστα παραδειγμάτων με λεπτομερείς περιγραφές, συνιστώ ανεπιφύλακτα το αρχικό τεύχος αυτής της δυνατότητας στο Github, όπου ο συγγραφέας περιγράφει πολλές περιπτώσεις χρήσης (σύνδεσμος επίσης στο παράρτημα).

Προτάσεις

Σχετικά

Προσάρτημα

Γλώσσες