Ώρα για νέο χειριστή
Εάν χρησιμοποιείτε πολλές λειτουργίες του Typescript, μπορεί να έχετε αισθανθεί την επιθυμία να γράψετε καλύτερα τον κώδικά σας όταν ορισμένες λειτουργίες συνδέονται μεταξύ τους. Εδώ είναι ένα παράδειγμα του τι εννοώ με αυτό.
const scream = (s: string) => s + "!";
const quote = (s: string) => `"${s}"`;
cosnt toUpperCase = (s: string) => s.toUpperCase();
// The first function that executes is
// 'toUpperCase', whose results is proved
// to 'scream', which in turn returns to
// 'quote', which returns the final string
//
// "HELLO WORLD!"
const text = quote(scream(toUpperCase("Hello World")));
Το κύριο πρόβλημα είναι ότι πρέπει να προσαρμόσετε το διανοητικό σας μοντέλο της ιεραρχίας των κλήσεων λειτουργίας στις προδιαγραφές του Typescript. Συγκεκριμένα, κάθε συνάρτηση λαμβάνει μια άλλη τιμή επιστροφής συναρτήσεων ως είσοδος, η οποία οδηγεί σε κώδικα όπου η αρχική τιμή εισόδου τοποθετείται στη δεξιά άκρη.
Αυτό δεν είναι κανένα πρόβλημα με κανένα τρόπο. Ο κώδικας λειτουργεί εντάξει και μόλις εξοικειωθείτε με τη σύνταξη της γλώσσας προγραμματισμού, τέτοιες κατασκευές αρχίζουν να αισθάνονται φυσικές.
Τι κάνει ο χειριστής αγωγών διαφορετικά
Χρησιμοποιώντας το νέο και επί του παρόντος πειραματικό χειριστή αγωγών, το Typescript σάς επιτρέπει να γράφετε τέτοιες αλυσοδεμένες κλήσεις από αριστερά προς τα δεξιά, όπου η αρχική είσοδος βρίσκεται τώρα στην αριστερή άκρη.
const scream = (s: string) => s + "!";
const quote = (s: string) => `"${s}"`;
cosnt toUpperCase = (s: string) => s.toUpperCase();
// And here's the new sytanx, starting
// from left and movign throught the
// call chain to the right.
//
// It's immediately better to read and
// self explanatory, imho.
"Hello World" |> toUpperCase |> scream |> quote;
Η προτεινόμενη σύνταξη είναι πολύ φιλική προς τους αρχάριους κατά τη γνώμη μου, καθώς διαβάζει περισσότερο σαν ανθρώπινη γλώσσα. Και αποφεύγοντας τις ένθετες κλήσεις λειτουργίας, το στυλ κώδικα συνολικά είναι καθαρότερο και πιο ευανάγνωστο.
Βήμα βήμα
Από το γράψιμο, τα πράγματα είναι ακόμη πολύ νωρίς. Η προτεινόμενη λειτουργία δεν πρέπει να χρησιμοποιείται σε κανένα είδος κωδικού παραγωγής, αλλά μόνο για ένα μικρό έργο που παίζει. Για μια γρήγορη εκκίνηση, ο Firefox υποστηρίζει τη σύνταξη εγγενώς μετά τη ρύθμιση της σημαίας χαρακτηριστικών «--able-pipeline-operator». Υπάρχει επίσης διαθέσιμο πρόσθετο babel.
Υπάρχουν ακόμα ορισμένες ανοιχτές ερωτήσεις, για παράδειγμα πώς να χειριστείτε τις κλήσεις συνάρτησης ασύγχρονου σε μια αλυσίδα λειτουργιών χρησιμοποιώντας τον νέο χειριστή. Ωστόσο, αυτή η δυνατότητα φαίνεται πολύ συναρπαστική, παρόλο που δεν θα φέρει ουσιαστικά νέα χαρακτηριστικά. Η προτεινόμενη σύνταξη φαίνεται πολύ καλή και ανυπομονώ να περιμένω το τελικό σχέδιο από την ομάδα Typescript.