Μπορείτε σας παρακαλώ να περιγράψετε ποια είναι η γλώσσα γραφομηχανή είναι;
Τι μπορεί να κάνει η JavaScript ή διαθέσιμες βιβλιοθήκες δεν μπορεί να κάνει, αυτό θα μου δώσει το λόγο για να το εξετάσει;
Μπορείτε σας παρακαλώ να περιγράψετε ποια είναι η γλώσσα γραφομηχανή είναι;
Τι μπορεί να κάνει η JavaScript ή διαθέσιμες βιβλιοθήκες δεν μπορεί να κάνει, αυτό θα μου δώσει το λόγο για να το εξετάσει;
Εγώ αρχικά έγραψε αυτή την απάντηση όταν γραφομηχανή ήταν ακόμα ζεστό-off-the-πρέσες. Πέντε χρόνια αργότερα, αυτό είναι μια επισκόπηση ΟΚ, αλλά κοιτάξτε απάντηση Lodewijk είναι κάτω για περισσότερο βάθος
Γραφομηχανή είναι ένα υπερσύνολο του JavaScript, που παρέχει κατά κύριο λόγο προαιρετική στατική πληκτρολόγηση, κλάσεων και διεπαφών. Ένα από τα μεγάλα οφέλη είναι να επιτρέψει IDEs να παρέχει μια πλουσιότερη περιβάλλον για τον εντοπισμό κοινά λάθη κατά την πληκτρολόγηση του κωδικού .
Για να πάρετε μια ιδέα του τι εννοώ, δείτε εισαγωγικό βίντεο της Microsoft με τη γλώσσα.
Για ένα μεγάλο έργο το JavaScript, υιοθετώντας γραφομηχανή θα μπορούσε να οδηγήσει σε πιο ισχυρό λογισμικό, ενώ εξακολουθούν να αναπτυχθούν, όπου μια κανονική εφαρμογή την Javascript για να τρέξει.
Είναι ανοιχτού κώδικα, αλλά μπορείτε να πάρετε μόνο το έξυπνο Intellisense κατά την πληκτρολόγηση εάν χρησιμοποιείτε ένα υποστηριζόμενο IDE. Αρχικά, αυτό ήταν μόνο το Visual Studio της Microsoft (σημειώνεται επίσης στο blog post από τον Miguel de Icaza ). Αυτές τις μέρες, άλλες IDEs προσφέρουν υποστήριξη γραφομηχανή πάρα πολύ .
Υπάρχει CoffeeScript , αλλά αυτό εξυπηρετεί πραγματικά διαφορετικό σκοπό. IMHO, CoffeeScript παρέχει αναγνωσιμότητα για τους ανθρώπους, αλλά γραφομηχανή παρέχει επίσης βαθιά αναγνωσιμότητα για τα εργαλεία μέσω προαιρετικού στατική πληκτρολόγηση του (δείτε αυτό το πρόσφατο post στο blog για λίγο περισσότερη κριτική). Υπάρχει, επίσης, Dart , αλλά αυτό είναι ένα πλήρες σε αντικατάσταση JavaScript (αν και μπορεί να παράγει κώδικα JavaScript )
Για παράδειγμα, εδώ είναι μερικές γραφομηχανή (μπορείτε να παίξετε με αυτό το γραφομηχανή παιδική χαρά )
class Greeter {
greeting: string;
constructor (message: string) {
this.greeting = message;
}
greet() {
return "Hello, " + this.greeting;
}
}
Και εδώ είναι το Javascript για αυτό θα παράγει
var Greeter = (function () {
function Greeter(message) {
this.greeting = message;
}
Greeter.prototype.greet = function () {
return "Hello, " + this.greeting;
};
return Greeter;
})();
Παρατηρήστε πως η γραφομηχανή καθορίζει τον τύπο των μεταβλητών μελών και παραμέτρων της μεθόδου τάξη. Αυτό αφαιρείται κατά τη μετάφραση προς το JavaScript, αλλά χρησιμοποιείται από τον IDE και compiler για να εντοπίσετε λάθη, όπως περνώντας ένα αριθμητικό τύπο στον κατασκευαστή.
Είναι επίσης ικανό να συναχθεί τύπους που δεν έχουν δηλωθεί ρητά, για παράδειγμα, θα καθορίσει η greet()μέθοδος επιστρέφει ένα string.
Πολλά προγράμματα περιήγησης και IDEs προσφέρουν άμεση στήριξη εντοπισμό σφαλμάτων μέσω sourcemaps. Δείτε αυτό το ερώτημα Υπερχείλιση στοίβας για περισσότερες πληροφορίες: εντοπισμού σφαλμάτων κώδικα γραφομηχανή με το Visual Studio
Εγώ αρχικά έγραψε αυτή την απάντηση όταν γραφομηχανή ήταν ακόμα ζεστό-off-the-πρέσες. Ελέγξτε την απάντηση Lodewijk του στο ερώτημα αυτό για λίγο περισσότερο την τρέχουσα λεπτομέρεια.
Αν και η αποδεκτή απάντηση είναι ωραία, ένιωσα πραγματικά δεν κάνει γραφομηχανή δικαιοσύνη σε αυτό το σημείο. Δεν είναι οι πρώτες μέρες πια. Γραφομηχανή βρίσκει πολύ περισσότερο υιοθέτηση τώρα με διάφορα δημοφιλή πλαίσια είναι γραμμένο σε γραφομηχανή. Οι λόγοι για τους οποίους θα πρέπει να επιλέξετε γραφομηχανή, αντί της JavaScript είναι πολλά τώρα.
Το JavaScript τυποποιημένα μέσα από τα πρότυπα ECMAScript. Δεν είναι όλα τα προγράμματα περιήγησης για τη στήριξη χρησιμοποιήσετε όλες τις δυνατότητες των νεότερων ECMAScript πρότυπα (δείτε αυτό το πίνακα ). Γραφομηχανή υποστηρίζει τα νέα πρότυπα ECMAScript και τις συγκεντρώνει σε στόχους (παλαιότερα) ECMAScript της επιλογής σας (τρέχουσα στόχοι είναι 3, 5 και 6 [γνωστός και ως το 2015]). Αυτό σημαίνει ότι μπορείτε να χρησιμοποιήσετε τις λειτουργίες του ES2015 και πέρα, όπως μονάδες, λειτουργίες λάμδα, τις κατηγορίες, ο φορέας εκμετάλλευσης εξάπλωση, αποδόμηση, σήμερα. Προσθέτει, επίσης, πληκτρολογήστε την υποστήριξη της πορεία, η οποία δεν είναι μέρος οποιουδήποτε προτύπου ECMAScript και μπορεί πιθανώς ποτέ να οφείλεται στην ερμηνεία της φύσης, αντί να συγκεντρώνονται φύση του το JavaScript. Το σύστημα τύπου της γραφομηχανή είναι σχετικά πλούσιο και περιλαμβάνει: διασυνδέσεις, enums, υβριδικά είδη, τα γενόσημα φάρμακα, ένωση και τομή τύπους, τροποποιητές πρόσβασης και πολλά άλλα. Η επίσημη ιστοσελίδα της γραφομηχανή παρέχει μια επισκόπηση αυτών των χαρακτηριστικών.
Γραφομηχανή έχει μια μοναδική φιλοσοφία σε σχέση με άλλες γλώσσες που συγκεντρώνουν για να το JavaScript. Κώδικας JavaScript είναι έγκυρο κωδικό γραφομηχανή? Γραφομηχανή είναι ένα υπερσύνολο του το JavaScript. Μπορείτε σχεδόν να μετονομάσετε σας .jsαρχεία σε .tsαρχεία και να αρχίσετε να χρησιμοποιείτε γραφομηχανή. Τα αρχεία γραφομηχανή καταρτίζονται σε αναγνώσιμη JavaScript, έτσι είναι και πάλι ότι η μετανάστευση είναι δυνατόν και την κατανόηση του καταρτίζονται γραφομηχανή, δεν είναι καθόλου δύσκολο. Με αυτό τον τρόπο γραφομηχανή βασίζεται στις επιτυχίες της JavaScript, ενώ η βελτίωση στις αδυναμίες του.
Από τη μία πλευρά, θα πρέπει μελλοντικά εργαλεία αποδείξεις που λαμβάνουν τα σύγχρονα πρότυπα ECMAScript και να συγκεντρώσει τα κάτω σε παλαιότερες εκδόσεις JavaScript με Βαβέλ είναι η πιο δημοφιλής. Από την άλλη πλευρά, θα πρέπει γλώσσες που μπορεί να διαφέρει εντελώς από τη Javascript για τα οποία στοχεύουν JavaScript, όπως CoffeeScript, Clojure, βελάκια, Elm, Haxe, ScalaJs, και μια ολόκληρη σειρά περισσότερο (δείτε αυτό το κατάλογο ). Οι γλώσσες αυτές, αν και θα μπορούσε να είναι καλύτερο από ό, τι όταν το μέλλον της Javascript μπορεί να οδηγήσει ποτέ, διατρέχουν μεγαλύτερο κίνδυνο να μην βρουν αρκετό έκδοση για το μέλλον τους να είναι εγγυημένη. Μπορεί επίσης να έχουν περισσότερα προβλήματα να βρουν έμπειρους προγραμματιστές για ορισμένες από αυτές τις γλώσσες, αν και αυτά που θα βρείτε συχνά μπορεί να είναι πιο ενθουσιώδεις. Διαλειτουργικότητα με JavaScript μπορεί επίσης να είναι λίγο πιο περίπλοκη, δεδομένου ότι είναι πιο μακριά απομακρυνθεί από ό, τι το JavaScript πραγματικά είναι.
Γραφομηχανή κάθεται στο μεταξύ αυτών των δύο άκρων, εξισορροπώντας έτσι τον κίνδυνο. Γραφομηχανή, δεν είναι μια επικίνδυνη επιλογή από οποιοδήποτε πρότυπο. Χρειάζεται πολύ λίγη προσπάθεια για να συνηθίσει, αν είστε εξοικειωμένοι με JavaScript, δεδομένου ότι δεν είναι μια εντελώς διαφορετική γλώσσα, έχει άριστη υποστήριξη της διαλειτουργικότητας JavaScript και έχει δει πολλά έκδοσης πρόσφατα.
Το JavaScript δυναμικά δακτυλογραφημένες. Αυτό σημαίνει ότι η Javascript δεν γνωρίζει τι είδους μεταβλητή είναι μέχρι να είναι πραγματικά αρχικοποιείται κατά το χρόνο εκτέλεσης. Αυτό σημαίνει επίσης ότι μπορεί να είναι πολύ αργά. Γραφομηχανή προσθέτει πληκτρολογήστε υποστήριξη JavaScript. Σφάλματα που προκαλούνται από λανθασμένες υποθέσεις κάποιας μεταβλητής ενός συγκεκριμένου τύπου μπορεί να εξαλειφθεί πλήρως αν παίξει σωστά τα χαρτιά σου? πόσο αυστηρή πληκτρολογείτε τον κωδικό σας ή αν πληκτρολογείτε τον κωδικό σας σε όλα είναι στο χέρι σας.
Γραφομηχανή κάνει την πληκτρολόγηση λίγο πιο εύκολη και πολύ λιγότερο σαφής από τη χρήση του τύπου συμπέρασμα. Για παράδειγμα: var x = "hello"σε γραφομηχανή είναι το ίδιο με το var x : string = "hello". Ο τύπος είναι απλά προκύπτει από τη χρήση του. Ακόμη και αυτό δεν πληκτρολογήσετε ρητά τα είδη, εξακολουθούν να είναι εκεί για να σας σώσει από το να κάνει κάτι το οποίο διαφορετικά θα οδηγήσει σε ένα σφάλμα χρόνου εκτέλεσης.
Γραφομηχανή είναι προαιρετικά πληκτρολογήσει από προεπιλογή. Για παράδειγμα, function divideByTwo(x) { return x / 2 }είναι μια έγκυρη λειτουργία σε γραφομηχανή η οποία μπορεί να κληθεί με κάθε είδους παράμετρο, έστω και αν καλώντας το με μια σειρά θα οδηγήσει προφανώς σε μια runtime error. Ακριβώς όπως έχετε συνηθίσει να το JavaScript. Αυτό λειτουργεί, γιατί όταν δεν υπάρχει τύπος ρητά ανατεθεί και ο τύπος δεν θα μπορούσε να συναχθεί, όπως στο παράδειγμα divideByTwo, γραφομηχανή θα αναθέσει σιωπηρά τον τύπο any. Αυτό σημαίνει ότι ο τύπος υπογραφή της λειτουργίας divideByTwo γίνεται αυτόματα function divideByTwo(x : any) : any. Υπάρχει μια σημαία compiler να απαγορεύσει αυτήν τη συμπεριφορά: --noImplicitAny. Η ενεργοποίηση αυτής της σημαίας σας δίνει ένα μεγαλύτερο βαθμό ασφάλειας, αλλά και σημαίνει ότι θα πρέπει να κάνουμε περισσότερα πληκτρολόγηση.
Τύποι έχουν ένα κόστος που συνδέεται με αυτές. Πρώτα απ 'όλα υπάρχει μια καμπύλη μάθησης, και το δεύτερο απ' όλα, βέβαια, αυτό θα σας κοστίσει λίγο περισσότερο χρόνο για να δημιουργήσει μια βάση κώδικα με τη χρήση κατάλληλων αυστηρή πληκτρολόγησης πάρα πολύ. Στην εμπειρία μου, οι δαπάνες αυτές είναι εντελώς αξίζει τον κόπο για κάθε σοβαρό κομμάτι του κώδικα που μοιράζεστε με άλλους. Μια μεγάλη μελέτη Κλίμακα Γλωσσών Προγραμματισμού και Ποιότητα κώδικα Github δείχνει ότι «ότι στατικούς τύπους γλώσσες σε γενικές γραμμές είναι λιγότερο επιρρεπείς ελάττωμα από τις δυναμικές μορφές, και ότι η ισχυρή πληκτρολόγηση είναι καλύτερο από το αδύναμο πληκτρολογώντας τον ίδιο ως».
Είναι ενδιαφέρον να σημειωθεί ότι αυτή η ίδια εφημερίδα διαπιστώνει ότι γραφομηχανή είναι λιγότερο επιρρεπής σε λάθη στη συνέχεια την Javascript για:
Για τα άτομα με θετικούς συντελεστές μπορούμε να αναμένουμε ότι η γλώσσα συνδέεται με, ceteris paribus, σε μεγαλύτερο αριθμό διορθώσεις ελαττώματος. Οι γλώσσες αυτές περιλαμβάνουν C, C ++, το JavaScript , Objective-C, PHP και Python. Οι γλώσσες Clojure, Haskell, Ruby, Σκάλα, και γραφομηχανή , όλοι έχουν αρνητικούς συντελεστές που σημαίνει ότι οι γλώσσες αυτές είναι λιγότερο πιθανό από ό, τι ο μέσος όρος να οδηγήσει σε βλάβη καθορισμό διαπράττει.
Η εμπειρία ανάπτυξης με γραφομηχανή είναι μια μεγάλη βελτίωση σε σχέση με το JavaScript. Το IDE ενημερώνεται σε πραγματικό χρόνο από τον compiler γραφομηχανή στις πλούσιες πληροφορίες για τον τύπο του. Αυτό δίνει μια-δυο σημαντικά πλεονεκτήματα. Για παράδειγμα, με τυπογραφικούς χαρακτήρες που μπορείτε να κάνετε με ασφάλεια refactorings όπως μετονομάζει σε όλη ολόκληρη τη βάση σας. Μέσα από την ολοκλήρωση κώδικα, μπορείτε να πάρετε inline βοήθεια σε ό, τι λειτουργεί μια βιβλιοθήκη μπορεί να προσφέρει. Δεν υπάρχουν άλλα πρέπει να τα θυμόμαστε ή να αναζητήσετε τους σε απευθείας σύνδεση αναφορές. Τα σφάλματα μεταγλώττισης αναφέρονται απευθείας στον IDE με μια κόκκινη γραμμή παραμορφωμένη, ενώ είστε απασχολημένοι κωδικοποίηση. Συνολικά αυτό επιτρέπει μια σημαντική αύξηση της παραγωγικότητας σε σχέση με την εργασία με JavaScript. Κάποιος μπορεί να περνούν περισσότερο χρόνο κωδικοποίησης και λιγότερο χρόνο τον εντοπισμό σφαλμάτων.
Υπάρχει ένα ευρύ φάσμα IDE που έχουν εξαιρετική υποστήριξη για γραφομηχανή, όπως το Visual Studio & VS κώδικα, Atom, Sublime, και IntelliJ / WebStorm.
Runtime λάθη του εντύπου cannot read property 'x' of undefinedή undefined is not a functionπροκαλούνται πολύ συχνά από σφάλματα στον κώδικα JavaScript. Από την γραφομηχανή κουτί μειώνει ήδη η πιθανότητα αυτά τα είδη των λαθών που συμβαίνουν, επειδή δεν μπορεί κανείς να χρησιμοποιήσει μια μεταβλητή που δεν είναι γνωστή στο compiler γραφομηχανή (με την εξαίρεση των ιδιοτήτων των anyδακτυλογραφημένο μεταβλητές). Είναι ακόμα δυνατόν όμως να χρησιμοποιούν λανθασμένα μια μεταβλητή που έχει οριστεί για την undefined. Ωστόσο, με την έκδοση της γραφομηχανή 2.0 μπορείτε να εξαλείψει αυτά τα είδη των λαθών όλοι μαζί μέσα από τη χρήση των μη-nullable τύπους. Αυτό λειτουργεί ως εξής:
Με αυστηρούς ελέγχους null ενεργοποιημένη ( --strictNullChecksσημαία compiler) ο compiler γραφομηχανή δεν θα επιτρέψει undefinedνα ανατεθεί σε μια μεταβλητή αν δεν το δηλώνουν ρητά ότι είναι nullable τύπου. Για παράδειγμα, let x : number = undefinedθα οδηγήσει σε ένα σφάλμα μεταγλώττισης. Αυτό ταιριάζει απόλυτα με τη θεωρία του τύπου, δεδομένου ότι undefinedδεν είναι ένας αριθμός. Κάποιος μπορεί να ορίσει xνα είναι ένα ποσό το είδος της numberκαι undefinedνα διορθώσει αυτό: let x : number | undefined = undefined.
Μόλις ένας τύπος είναι γνωστό ότι είναι nullable, που σημαίνει ότι είναι ενός τύπου που μπορεί επίσης να είναι η αξία nullή undefined, ο compiler γραφομηχανή μπορεί να καθορίσει, μέσω ανάλυσης του τύπου με βάση τον έλεγχο της ροής κατά πόσον ή όχι τον κωδικό σας μπορείτε να χρησιμοποιήσετε με ασφάλεια μια μεταβλητή ή όχι. Με άλλα λόγια, όταν ελέγχετε μια μεταβλητή είναι undefinedμέσω για παράδειγμα μια ifδήλωση ο compiler γραφομηχανή θα συμπεράνουμε ότι ο τύπος στο υποκατάστημα της ροής ελέγχου κωδικού σας δεν είναι πια nullable και ως εκ τούτου μπορεί να χρησιμοποιηθεί με ασφάλεια. Εδώ είναι ένα απλό παράδειγμα:
let x: number | undefined;
if (x !== undefined) x += 1; // this line will compile, because x is checked.
x += 1; // this line will fail compilation, because x might be undefined.
Κατά τη διάρκεια της κατασκευής 2016 συνέδριο συν-σχεδιαστής της γραφομηχανή Anders Hejlsberg έδωσε μια λεπτομερή εξήγηση και την επίδειξη αυτής της δυνατότητας: το βίντεο (από 44:30 έως 56:30).
Για να χρησιμοποιήσετε γραφομηχανή θα πρέπει να έχετε μια διαδικασία κατασκευής να καταρτίσει τον κώδικα JavaScript. Η διαδικασία κατασκευής διαρκεί συνήθως μόνο μερικά δευτερόλεπτα, ανάλογα βέβαια με το μέγεθος του έργου σας. Ο compiler γραφομηχανή υποστηρίζει στοιχειώδη κατάρτιση ( --watchσημαία compiler), έτσι ώστε όλες οι επόμενες αλλαγές μπορούν να καταρτίζονται με μεγαλύτερη ταχύτητα.
Ο compiler γραφομηχανή μπορεί inline πληροφορίες χάρτη πηγή των παραγόμενων .js αρχεία ή να δημιουργήσετε ξεχωριστά αρχεία .map. Πληροφοριών χάρτη Πηγή μπορούν να χρησιμοποιηθούν από τον εντοπισμό σφαλμάτων επιχειρήσεις κοινής ωφέλειας, όπως τα Chrome DevTools και άλλα IDE να αφορούν τις γραμμές του Javascript για αυτούς που τους δημιουργούνται στην γραφομηχανή. Αυτό καθιστά δυνατή για να μπορείτε να ορίσετε σημεία διακοπής και να επιθεωρούν τις μεταβλητές κατά τη διάρκεια της εκτέλεσης απευθείας στον κώδικα γραφομηχανή σας. Πληροφοριών χάρτη Πηγή λειτουργεί αρκετά καλά, ήταν γύρω πολύ πριν από γραφομηχανή, αλλά debugging γραφομηχανή δεν είναι γενικά τόσο μεγάλη όσο όταν χρησιμοποιούν άμεσα το JavaScript. Πάρτε το thisκλειδί για παράδειγμα. Λόγω της αλλαγής των σημασιολογία της thisλέξης-κλειδιού γύρω από το κλείσιμο από την ES2015, thisμπορεί να υπάρχει στην πραγματικότητα κατά τη διάρκεια εκτέλεσης ως μεταβλητή που ονομάζεται _this(δείτε αυτή την απάντηση ). Αυτό μπορεί να σας προκαλέσει σύγχυση κατά τον εντοπισμό σφαλμάτων, αλλά γενικά δεν είναι πρόβλημα, αν γνωρίζετε γι 'αυτό ή να επιθεωρήσει τον κώδικα JavaScript. Θα πρέπει να σημειωθεί ότι η Βαβέλ πάσχει ακριβώς το ίδιο είδος της έκδοσης.
Υπάρχουν μερικά άλλα κόλπα ο compiler γραφομηχανή μπορεί να κάνει, όπως τη δημιουργία παρακολουθούν κώδικα βασίζεται σε διακοσμητές , τη δημιουργία του κώδικα φόρτωσης ενότητα για διαφορετικά συστήματα ενότητα και την ανάλυση JSX . Ωστόσο, θα χρειαστεί πιθανόν ένα εργαλείο κατασκευής εκτός από τον compiler γραφομηχανή. Για παράδειγμα, αν θέλετε να συμπιέσετε τον κωδικό σας, θα πρέπει να προσθέσετε και άλλα εργαλεία για την διαδικασία κατασκευής σας για να το πράξουν.
Υπάρχουν γραφομηχανή plugins συλλογή διαθέσιμη για Webpack , Gulp , Grunt και λίγο πολύ οποιοδήποτε άλλο εργαλείο κατασκευής την Javascript εκεί έξω. Η τεκμηρίωση γραφομηχανή έχει ένα τμήμα σχετικά με την ενσωμάτωση με εργαλεία κατασκευής καλύπτει όλα αυτά. Μια βάμβακα είναι επίσης διαθέσιμη σε περίπτωση που επιθυμείτε ακόμα πιο χτίσει τον έλεγχο του χρόνου. Υπάρχουν επίσης ένα μεγάλο αριθμό έργων σπόρο εκεί έξω που θα σας πάρει ξεκίνησε με γραφομηχανή σε συνδυασμό με ένα σωρό άλλες τεχνολογίες, όπως η γωνιακή 2, React, χόβολη, SystemJs, WebPack, Gulp, κ.λπ.
Από γραφομηχανή είναι τόσο στενά συνδεδεμένη με τη Javascript για να το έχει μεγάλες δυνατότητες διαλειτουργικότητας, αλλά κάποια πρόσθετη εργασία που απαιτείται για να συνεργαστεί με τις βιβλιοθήκες JavaScript στο γραφομηχανή. Ορισμοί γραφομηχανή απαιτούνται έτσι ώστε ο compiler γραφομηχανή αντιλαμβάνεται ότι η λειτουργία απαιτεί όπως _.groupByή angular.copyή $.fadeOutδεν είναι στην πραγματικότητα παράνομες καταστάσεις. Οι ορισμοί για τις λειτουργίες αυτές τοποθετούνται σε .d.tsαρχεία.
Η απλούστερη μορφή ο ορισμός μπορεί να είναι να επιτρέψει σε ένα αναγνωριστικό για να χρησιμοποιηθεί με οποιοδήποτε τρόπο. Για παράδειγμα, όταν χρησιμοποιείτε Lodash , ένα αρχείο ορισμού ενιαία γραμμή declare var _ : anyθα σας επιτρέψει να καλέσετε οποιαδήποτε λειτουργία που θέλετε _, αλλά τότε φυσικά θα είναι επίσης ακόμα σε θέση να κάνουν λάθη: _.foobar()θα ήταν ένα νομικό κλήση γραφομηχανή, αλλά είναι φυσικά μια παράνομη κλήση κατά το χρόνο εκτέλεσης. Αν θέλετε υποστήριξη κατάλληλο τύπο και την ολοκλήρωση κώδικα αρχείο ορισμού σας πρέπει να είναι πιο ακριβή (βλ lodash ορισμούς για παράδειγμα).
NPM ενότητες οι οποίες έρχονται προ-συσκευασμένο με τα δικά τους ορισμούς τύπου κατανοητό αυτόματα από τον compiler γραφομηχανή (βλέπε τεκμηρίωση ). Για λίγο πολύ οποιοδήποτε άλλο ημι-δημοφιλή βιβλιοθήκη JavaScript που δεν περιλαμβάνουν τις δικές τους ορισμούς του κάποιος εκεί έξω έχει ήδη κάνει ορισμούς τύπου διατίθενται μέσω άλλης μονάδας NPM. Οι ενότητες αυτές με το πρόθεμα «τύπους @ /» και προέρχονται από μια αποθήκη Github ονομάζεται DefinitelyTyped .
Υπάρχει ένα μειονέκτημα: οι ορισμοί του τύπου πρέπει να ταιριάζει με την έκδοση της βιβλιοθήκης που χρησιμοποιείτε κατά το χρόνο εκτέλεσης. Εάν δεν το πράξουν, γραφομηχανή μπορεί να σας απαγορεύσει από την κλήση μιας συνάρτησης ή εύρεση τιμών μιας μεταβλητής που υπάρχουν ή σας επιτρέπουν να καλέσετε μια συνάρτηση ή dereference μια μεταβλητή που δεν υπάρχει, μόνο και μόνο επειδή οι τύποι δεν ταιριάζει με το χρόνο εκτέλεσης κατά τη μεταγλώττιση χρόνο . Έτσι, βεβαιωθείτε ότι έχετε τοποθετήσει τη σωστή έκδοση των ορισμών τύπου για τη σωστή έκδοση της βιβλιοθήκης που χρησιμοποιείτε.
Για να είμαι ειλικρινής, υπάρχει μια μικρή ταλαιπωρία για αυτό και μπορεί να είναι ένας από τους λόγους που δεν επιλέγουν γραφομηχανή, αλλά αντ 'αυτού να πάει για κάτι σαν Βαβέλ που δεν πάσχουν από το να έχουν να πάρουν ορισμούς τύπου καθόλου. Από την άλλη πλευρά, αν ξέρετε τι κάνετε, μπορείτε εύκολα ξεπεραστούν κάθε είδους προβλήματα που προκαλούνται από λανθασμένες ή λείπουν αρχεία ορισμού.
Κάθε .jsαρχείο μπορεί να μετονομαστεί σε μία .tsκαι έτρεξε μέσα από τον compiler γραφομηχανή για να πάρει συντακτικά τον ίδιο κώδικα JavaScript ως έξοδο (αν ήταν συντακτικά σωστό στην πρώτη θέση). Ακόμα και όταν ο compiler γραφομηχανή παίρνει σφάλματα μεταγλώττισης θα παράγει ακόμα ένα .jsαρχείο. Μπορεί να δεχτεί ακόμα και .jsαρχεία εισόδου με τη --allowJsσημαία. Αυτό σας επιτρέπει να ξεκινήσετε με γραφομηχανή αμέσως. Δυστυχώς σφάλματα μεταγλώττισης είναι πιθανό να συμβεί στην αρχή. Κάποιος δεν πρέπει να θυμόμαστε ότι αυτά δεν είναι συνταρακτικό λάθη, όπως μπορεί να χρησιμοποιηθεί για να με άλλους συντάκτες.
Τα σφάλματα μεταγλώττισης κανείς στην αρχή κατά τη μετατροπή ενός έργου Javascript για ένα έργο γραφομηχανή είναι αναπόφευκτες από τη φύση γραφομηχανή του. Γραφομηχανή ελέγχει όλες τις κώδικα για την εγκυρότητα και ως εκ τούτου χρειάζεται να ξέρετε για όλες τις λειτουργίες και τις μεταβλητές που χρησιμοποιούνται. Έτσι, οι ορισμοί του τύπου πρέπει να είναι σε θέση για όλα αυτά τα διαφορετικά σύνταξη λάθη βέβαιο ότι θα συμβεί. Όπως αναφέρεται στο παραπάνω κεφάλαιο, για σχεδόν οποιοδήποτε πλαίσιο τη Javascript υπάρχουν .d.tsαρχεία που μπορεί εύκολα να αποκτηθεί με την εγκατάσταση των πακέτων DefinitelyTyped . Θα μπορούσε όμως να είναι ότι έχετε χρησιμοποιήσει κάποια σκοτεινή βιβλιοθήκη, για τα οποία δεν υπάρχουν ορισμοί γραφομηχανή ή ότι έχετε polyfilled κάποια πρωτόγονων JavaScript. Σε αυτή την περίπτωση θα πρέπει να παρέχει ορισμούς τύπου για αυτά τα κομμάτια, ώστε τα σφάλματα μεταγλώττισης για να εξαφανιστούν. Απλά δημιουργήστε ένα .d.tsαρχείο και να το συμπεριλάβετε στο tsconfig.json του filesπίνακα, έτσι ώστε να είναι πάντα θεωρείται από τον compiler γραφομηχανή. Σε αυτό δηλώνουν εκείνα τα κομμάτια που γραφομηχανή δεν ξέρει για το είδος any. Μόλις έχετε εξαλειφθούν όλα τα σφάλματα που μπορεί να εισάγει σταδιακά την πληκτρολόγηση σε εκείνα τα μέρη ανάλογα με τις ανάγκες σας.
Επίσης, θα χρειαστεί κάποια εργασία για (επανα) διαμόρφωση του αγωγού κατασκευή σας για να πάρετε γραφομηχανή στον αγωγό κατασκευής. Όπως αναφέρθηκε στο κεφάλαιο για συλλογή υπάρχουν πολλές καλές πόρων εκεί έξω και σας ενθαρρύνουμε να ψάξουν για έργα σπόρους που χρησιμοποιούν τον συνδυασμό των εργαλείων που θέλετε να εργάζεστε.
Το μεγαλύτερο εμπόδιο είναι η καμπύλη εκμάθησης. Σας ενθαρρύνουμε να παίξετε γύρω με ένα μικρό έργο από την πρώτη. Δείτε πώς λειτουργεί, πώς χτίζει, τα αρχεία που χρησιμοποιεί, πώς διαμορφώνεται, πώς λειτουργεί το IDE σας, πώς είναι δομημένη, που τα εργαλεία που χρησιμοποιεί, κλπ Μετατρέποντας μια μεγάλη βάση κώδικα Javascript για να τη γραφομηχανή είναι πολύ εφικτό, όταν ξέρετε τι κάνετε, αλλά μπορεί να είναι απογοητευτικό όταν δεν το κάνουν.
Γραφομηχανή είναι ανοικτού κώδικα (Apache 2 άδεια, δείτε GitHub ) και υποστηρίζεται από τη Microsoft. Anders Hejlsberg , ο κύριος αρχιτέκτονας της C # ηγείται του έργου. Είναι ένα πολύ δραστήριο έργο? η ομάδα γραφομηχανή έχει απελευθερώσει πολλά νέα χαρακτηριστικά τα τελευταία χρόνια και πολλές μεγάλες αυτές έχουν προγραμματιστεί ακόμα να έρθει (δείτε τον χάρτη πορείας ).
Στην έρευνα StackOverflow έργου 2017 γραφομηχανή ήταν το πιο δημοφιλές transpiler JavaScript (9η θέση στη γενική κατάταξη) και κέρδισε την τρίτη θέση στην πιο αγαπημένα κατηγορία γλώσσα προγραμματισμού.
Γραφομηχανή κάνει κάτι παρόμοιο με αυτό που κάνει λιγότερο ή Sass για CSS. Είναι σούπερ σετ αυτό, πράγμα που σημαίνει ότι κάθε κωδικό JS που γράφετε είναι έγκυρο κωδικό γραφομηχανή. Πλέον μπορείτε να χρησιμοποιήσετε τα άλλα καλούδια που προσθέτει με τη γλώσσα, και η transpiled κωδικός θα ισχύει js. Μπορείτε να ορίσετε ακόμη και την έκδοση JS που θέλετε με αποτέλεσμα τον κωδικό σας.
Επί του παρόντος γραφομηχανή είναι ένα σούπερ σύνολο των ES2015, έτσι θα μπορούσε να είναι μια καλή επιλογή για να ξεκινήσει την εκμάθηση της νέας js χαρακτηριστικά και transpile την απαραίτητη πρότυπο για το έργο σας.
« Γραφομηχανή Βασικές αρχές » - ένα Pluralsight βίντεο πιάτων από Dan Wahlin και Ιωάννη Παπά είναι ένα πραγματικά καλό, σήμερα (25 Μαρτίου, 2016) ενημερώθηκε ώστε να αντικατοπτρίζει γραφομηχανή 1.8, εισαγωγή στη γραφομηχανή.
Για μένα τα πολύ καλά χαρακτηριστικά, εκτός από τα ωραία δυνατότητες intellisense, είναι οι τάξεις , διεπαφές , ενότητες , η ευκολία της εφαρμογής της AMD, καθώς και η δυνατότητα να χρησιμοποιήσετε το Visual Studio πρόγραμμα εντοπισμού σφαλμάτων γραφομηχανή, όταν ενεργοποιείται με IE.
Για να συνοψίσουμε : Αν χρησιμοποιείται σύμφωνα με τον προορισμό, γραφομηχανή μπορεί να κάνει τον προγραμματισμό το JavaScript πιο αξιόπιστη και πιο εύκολο. Μπορεί να αυξήσει την παραγωγικότητα του προγραμματιστή Javascript για σημαντικά κατά την πλήρη SDLC.
σενάριο Ecma 5 (ES5) τα οποία όλα υποστήριξη του προγράμματος περιήγησης και προ-μεταγλωττισμένο. ES6 / ES2015 και ES / 2016 ήρθε φέτος με πολλές αλλαγές, ώστε να αναδυθεί αυτές τις αλλαγές, υπάρχει κάτι στο μεταξύ των οποίων θα πρέπει να νοιάζεται για τόσο γραφομηχανή. • γραφομηχανή είναι Είδη -> σημαίνει ότι πρέπει να καθορίσετε τον τύπο δεδομένων του κάθε ακινήτου και μεθόδων. Εάν γνωρίζετε C #, στη συνέχεια, γραφομηχανή είναι εύκολο να καταλάβει. • Μεγάλο πλεονέκτημα της γραφομηχανή είναι εμείς τύπου ταυτότητας που σχετίζονται με θέματα νωρίς πριν πάτε για παραγωγή. Αυτό επιτρέπει μονάδα δοκιμές να αποτύχει εάν υπάρχει οποιαδήποτε αναντιστοιχία τύπου.