Πώς να ορίσετε και να χρησιμοποιήσετε τις κλάσεις TypeScript
Οι κλάσεις TypeScript παρέχουν έναν σαφή και δομημένο τρόπο οργάνωσης των δεδομένων και της συμπεριφοράς σε ένα αντικείμενο. Αυτό σας διευκολύνει στη μοντελοποίηση οντοτήτων και εννοιών στον κώδικά σας.
Τι είναι οι κλάσεις TypeScript;
Οι κλάσεις είναι μια βασική έννοια του TypeScript, μιας γλώσσας προγραμματισμού βασισμένης στο JavaScript. Οι κλάσεις αντιπροσωπεύουν μια δομημένη μέθοδο για τον ορισμό αντικειμένων και την εφαρμογή αντικειμενοστρεφούς προγραμματισμού (OOP). Οι κλάσεις TypeScript είναι σαν σχέδια για τη δημιουργία αντικειμένων που συγκεντρώνουν δεδομένα και μεθόδους που σχετίζονται λογικά μεταξύ τους.
Το TypeScript περιέχει όλες τις λειτουργίες του JavaScript και περιλαμβάνει επίσης στατική τυποποίηση. Αυτό σας επιτρέπει να καθορίσετε τύπους δεδομένων για λειτουργίες, μεταβλητές και κλάσεις TypeScript, ώστε να μπορείτε να εντοπίσετε σφάλματα κατά τη διάρκεια της μεταγλώττισης. Εκτός από την ασφάλεια τύπων, οι κλάσεις TypeScript υποστηρίζουν επίσης έννοιες όπως η κληρονομικότητα και η αφαίρεση, οι οποίες διευκολύνουν την ανάπτυξη σύνθετων εφαρμογών.
Με τις κλάσεις TypeScript, μπορείτε να δημιουργήσετε μια σαφή ιεραρχία κλάσεων που κληρονομούν ιδιότητες και μεθόδους. Αυτό προάγει την επαναχρησιμοποίηση και τη δομή του κώδικα. Οι κατασκευαστές κλάσεων επιτρέπουν την αρχικοποίηση των περιπτώσεων και εξασφαλίζουν τη συνεπή δημιουργία αντικειμένων.
Ποια είναι η σύνταξη για τις κλάσεις TypeScript;
Η σημειογραφία των κλάσεων TypeScript είναι παρόμοια με αυτή του ECMAScript 6 (ES6) και αποτελεί μια εκτεταμένη έκδοση της σύνταξης κλάσεων JavaScript. Μια κλάση TypeScript μπορεί να περιέχει διάφορα στοιχεία για τον ορισμό της δομής και της συμπεριφοράς των αντικειμένων. Τα κύρια στοιχεία είναι:
- Ιδιότητες
- Κατασκευαστές
- Μέθοδοι
Ιδιότητες
Οι ιδιότητες καθορίζουν την κατάσταση ενός αντικειμένου. Αποθηκεύουν τιμές δεδομένων και μπορούν να συνοδεύονται από τύπους δεδομένων, έτσι ώστε να έχουν μόνο έγκυρες τιμές.
class ClassName {
propertyName: propertyType;
}typescript- ClassName: το όνομα της κλάσης
- propertyName: το όνομα της ιδιότητας που θέλετε να ορίσετε
- propertyType: ο τύπος δεδομένων της ιδιότητας
Ακολουθεί ένα συγκεκριμένο παράδειγμα:
class Person {
name: string;
}typescriptΠρώτα, ορίζεται μια κλάση Person με μια ιδιότητα name τύπου string. Αυτό σημαίνει ότι οι παρουσίες της κλάσης Person έχουν μια ιδιότητα name που αποθηκεύει συμβολοσειρές.
Κατασκευαστής
Ο κατασκευαστής στο TypeScript είναι μια ειδική μέθοδος που καλείται όταν δημιουργείται μια παρουσία κλάσης (αντικείμενο). Χρειάζεται για την αρχικοποίηση των ιδιοτήτων ενός αντικειμένου. Ο κατασκευαστής ουσιαστικά ορίζει την αρχική κατάσταση μιας παρουσίας. Μπορείτε να καθορίσετε παραμέτρους στον κατασκευαστή για να μεταβιβάσετε τιμές κατά την παρουσίαση κλάσεων TypeScript.
Η βασική σύνταξη ενός κατασκευαστή στο TypeScript είναι:
class ClassName {
constructor(parameter1: Type1, parameter2: Type2, ...) {
}
}typescript- κατασκευαστής: κάθε κλάση μπορεί να έχει έναν μόνο κατασκευαστή. Εάν δεν έχει οριστεί κατασκευαστής, δημιουργείται από προεπιλογή ένας κενός κατασκευαστής.
- παράμετρος: Τύπος: οι παράμετροι είναι προαιρετικές, ανάλογα με την κλάση και τις απαιτήσεις της. Οι παράμετροι πρέπει να φέρουν ετικέτα με τους τύπους δεδομένων τους.
Ένα παράδειγμα κατασκευαστή:
class Person {
firstName: string;
lastName: string;
constructor(firstName: string, lastName: string) {
this.firstName = firstName;
this.lastName = lastName;
}
}typescriptΣτο παραπάνω παράδειγμα, η κλάση Person έχει έναν κατασκευαστή που δέχεται δύο παραμέτρους firstName και lastName. Κατά τη δημιουργία μιας παρουσίας αυτής της κλάσης, αυτές οι παράμετροι μεταβιβάζονται και ο κατασκευαστής αρχικοποιεί τις ιδιότητες firstName και lastName της παρουσίας με τις αντίστοιχες τιμές. this αναφέρεται στην τρέχουσα παρουσία της κλάσης στην οποία εκτελείται ο κώδικας.
Μέθοδοι
Στο TypeScript, οι μέθοδοι είναι συναρτήσεις που μπορούν να οριστούν σε κλάσεις και να εφαρμοστούν στις περιπτώσεις τους. Οι μέθοδοι σας επιτρέπουν να εκτελέσετε συγκεκριμένες ενέργειες ή λειτουργίες στο πλαίσιο μιας κλάσης.
class ClassName {
// ...
methodName(parameter1: Type1, parameter2: Type2, ...): ReturnType {
}
// ...
}typescript- methodName: όνομα της μεθόδου
- parameter: Τύπος: προαιρετικές παράμετροι που δέχεται η μέθοδος
- ReturnType: αυτός είναι ο τύπος δεδομένων που καθορίζει την τιμή που επιστρέφει η μέθοδος. Εάν η μέθοδος δεν επιστρέφει τίποτα, μπορείτε να καθορίσετε
void.
Για να αποκτήσετε πρόσβαση σε μια ιδιότητα ή να καλέσετε μια μέθοδο σε μια παρουσία κλάσης, χρησιμοποιήστε τον τελεστή τελείας . ακολουθούμενο από το όνομα της μεθόδου και τα απαιτούμενα ορίσματα, εάν η μέθοδος απαιτεί παραμέτρους.
class Person {
firstName: string;
lastName: string;
constructor(firstName: string, lastName: string) {
this.firstName = firstName;
this.lastName = lastName;
}
getFullName(): string {
return this.firstName + " " + this.lastName;
}
}
const person = new Person("John", "Doe");
const fullName = person.getFullName();typescriptΗ μέθοδος getFullName χρησιμοποιείται για τη δημιουργία και την επιστροφή του πλήρους ονόματος του ατόμου. Έχει πρόσβαση στις τιμές των ιδιοτήτων firstName και lastName που ορίζονται στην κλάση και αρχικοποιούνται στον κατασκευαστή. Το αντικείμενο person δημιουργείται από τη λέξη-κλειδί new που ακολουθείται από το όνομα της κλάσης και τις αντίστοιχες παραμέτρους. Η μέθοδος συνενώνει τις δύο συμβολοσειρές όταν καλείται και επιστρέφει το πλήρες όνομα ως συμβολοσειρά. Η έξοδος για το αντικείμενο person είναι επομένως «John Doe».
Παραδείγματα κλάσης TypeScript
Οι κλάσεις TypeScript διαθέτουν διάφορους μηχανισμούς για την οργάνωση και τον έλεγχο της δομής και της συμπεριφοράς των αντικειμένων. Παρακάτω, παρουσιάζουμε μερικές έννοιες για τη χρήση των κλάσεων TypeScript.
Πρόσβαση
Το TypeScript προσφέρει τρεις τροποποιητές πρόσβασης: public, private και protected για τον έλεγχο της πρόσβασης σε ιδιότητες και μεθόδους εντός και εκτός της κλάσης.
- δημόσιο (πρότυπο): οι ιδιότητες και οι μέθοδοι που φέρουν την ένδειξη
publicμπορούν να κληθούν από οπουδήποτε, τόσο εντός όσο και εκτός της κλάσης. - ιδιωτικές:
privateαναφέρεται σε ιδιότητες και μεθόδους που μπορούν να κληθούν μόνο μέσα στην ίδια την κλάση. Δεν είναι προσβάσιμες από εξωτερικά τμήματα κώδικα. - προστατευμένες: οι ιδιότητες και οι μέθοδοι που φέρουν την ένδειξη
protectedμπορούν να κληθούν από την ίδια την κλάση και από παράγωγες κλάσεις (στην κληρονομικότητα), αλλά όχι από εξωτερικό κώδικα.
class Person {
private socialSecurityNumber: string;
constructor(ssn: string) {
this.socialSecurityNumber = ssn;
}
greet() {
console.log("Hello, I am a person with SSN: " + this.socialSecurityNumber);
}
}
const person = new Person("123-45-6789");
person.greet();typescriptΣε αυτό το παράδειγμα, socialSecurityNumber είναι μια ιδιωτική ιδιότητα στην οποία μπορεί να έχει πρόσβαση μόνο η κλάση Person. Ωστόσο, μπορείτε να καλέσετε τη μέθοδο greet από έξω από την κλάση.
Κληρονομιά
Η κληρονομικότητα είναι μια θεμελιώδης έννοια στην αντικειμενοστρεφή προγραμματισμό (OOP) που χρησιμοποιείται στο TypeScript και σε πολλές άλλες γλώσσες προγραμματισμού του διαδικτύου. Επιτρέπει τη δημιουργία μιας νέας κλάσης με βάση μια υπάρχουσα βασική κλάση ή υπερκλάση. Η παράγωγη κλάση (υποκλάση) κληρονομεί τις ιδιότητες και τις μεθόδους της βασικής κλάσης και μπορεί να τις επεκτείνει ή να τις προσαρμόσει.
class Animal {
name: string;
constructor(name: string) {
this.name = name;
}
makeSound() {
console.log("Some generic sound");
}
}
class Dog extends Animal {
makeSound() {
console.log(this.name + " barks");
}
}
const myDog = new Dog("Buddy");
myDog.makeSound();typescriptΧρησιμοποιώντας τη λέξη-κλειδί extends, η υποκατηγορία Dog κληρονομεί τις ιδιότητες και τις μεθόδους από την κατηγορία Animal. Η κατηγορία Dog αντικαθιστά τη μέθοδο makeSound για να προσθέσει μια συγκεκριμένη συμπεριφορά, ενώ κληρονομεί την ιδιότητα name από Animal.
Μόνο για ανάγνωση
Μπορείτε να χρησιμοποιήσετε readonly για να δηλώσετε ιδιότητες των κλάσεων ή των αντικειμένων TypeScript ως μόνο για ανάγνωση. Αυτό σημαίνει ότι μόλις μια ιδιότητα μόνο για ανάγνωση έχει αρχικοποιηθεί, η τιμή της δεν μπορεί πλέον να αλλάξει.
class Circle {
readonly pi: number = 3.14159;
radius: number;
constructor(radius: number) {
this.radius = radius;
}
getArea() {
return this.pi *this.radius* this.radius;
}
}
const myCircle = new Circle(5);
console.log(myCircle.getArea()); // Output: ≈ 78,54typescriptΗ ιδιότητα pi είναι μόνο για ανάγνωση στο παράδειγμά μας και αρχικοποιείται στον κατασκευαστή. Μετά την αρχικοποίηση, pi δεν μπορεί πλέον να αλλάξει. Εάν προσπαθήσετε να τροποποιήσετε την τιμή της pi μετά την αρχικοποίηση, το TypeScript θα δημιουργήσει ένα σφάλμα σύνταξης.
117a1597efe473942f630cae75678a0b
6fe9ad4655c8a5b1928748d3fe74ed9a
d8f0a02ba8214fdd5d685d3903e5f4f9
eda8918605208d5f6aad90c958c592eb