Ο τροποποιητής private στο TypeScript

Ο τροποποιητής private εφαρμόζεται σε περιπτώσεις όπου χρειάζεται να απαγορευτεί η πρόσβαση σε ιδιότητες και μεθόδους από έξω από την κλάση. Σε αυτή την περίπτωση, ακόμα και σε κλάσεις-απόγονους δεν θα είναι δυνατή η πρόσβαση σε αυτές τις ιδιότητες.

Ας δούμε ένα παράδειγμα. Ας φτιάξουμε στην κλάση User μια ιδιωτική ιδιότητα name:

typescriptclass User {
  private name: string;
  
  constructor(name: string) {
    this.name = name;
  }
}

Ας δημιουργήσουμε ένα αντικείμενο της κλάσης, περνώντας στον constructor την τιμή της ιδιότητάς μας:

typescriptlet user: User = new User('john');

Τώρα, μια προσπάθεια ανάγνωσης αυτής της ιδιωτικής ιδιότητας έξω από την κλάση θα οδηγήσει σε σφάλμα:

typescriptconsole.log(user.name); // σφάλμα

Επίσης, σε σφάλμα θα οδηγήσει και μια προσπάθεια εγγραφής κάτι σε αυτή την ιδιότητα από έξω από την κλάση:

typescriptuser.name = 'eric'; // σφάλμα

Ωστόσο, μέσα σε μεθόδους της κλάσης θα είναι δυνατό τόσο η ανάγνωση, όσο και η αλλαγή της τιμής της ιδιωτικής μας ιδιότητας:

typescriptclass User {
  private name: string;
  
  constructor(name: string) {
    this.name = name;
  }
  
  public getName() {
    return this.name; // διαβάζουμε την ιδιότητα
  }
  
  public setName(name: string) {
    this.name = name; // γράφουμε νέα τιμή στην ιδιότητα
  }
}
Задание 1

Φτιάξτε μια κλάση User, που να περιέχει ιδιωτικές ιδιότητες με όνομα και ηλικία. Έστω ότι οι αρχικές τους τιμές ορίζονται μέσω του constructor.

Задание 2

Στην κλάση User σας φτιάξτε δημόσιες μεθόδους getName και getAge, που να επιτρέπουν την απόκτηση των τιμών των αντίστοιχων ιδιωτικών ιδιοτήτων.

Задание 3

Στην κλάση User σας φτιάξτε δημόσιες μεθόδους setName και setAge, που να επιτρέπουν την αλλαγή των τιμών των αντίστοιχων ιδιωτικών ιδιοτήτων.