Accessors στην OOP στο TypeScript
Επίσης, όπως και στον καθαρό JavaScript, στο TypeScript μπορούμε να φτιάξουμε accessors ιδιοτήτων: getters και setters.
Στο TypeScript, ωστόσο, τα ονόματα των accessors δεν
πρέπει να συμπίπτουν με τα ονόματα των ιδιοτήτων. Ας
δούμε πρακτικά. Ας φτιάξουμε accessors
για την ιδιωτική ιδιότητα name. Αν
τα ονόματα για τους accessors τα δώσουμε επίσης name,
τότε αυτός ο κώδικας θα δώσει σφάλμα:
class User {
private name: string = '';
public set name(name: string) { // θα δώσει σφάλμα
this.name = name;
}
public get name(): string {
return this.name;
}
}
Ας διορθώσουμε το πρόβλημα, για παράδειγμα, μετονομάζοντας την ιδιωτική ιδιότητα:
class User {
private _name: string = '';
public set name(name: string) {
this._name = name;
}
public get name(): string {
return this._name;
}
}
Φτιάξτε την κλάση User, που περιέχει
ιδιωτικές ιδιότητες με όνομα και ηλικία.
Φτιάξτε accessors αυτών των ιδιοτήτων.
Τροποποιήστε τον setter της ηλικίας έτσι ώστε
να μπορεί να οριστεί ηλικία από 0 έως
120. Αν καθοριστεί οποιαδήποτε άλλη
τιμή, θα πρέπει να εγείρεται εξαίρεση.