Στατικές Ιδιότητες σε TypeScript
Ας δούμε πώς να προσπελαύνουμε τις στατικές ιδιότητες μέσα σε αντικείμενα.
Ας υποθέσουμε ότι έχουμε την ακόλουθη κλάση με μια στατική ιδιότητα:
class User {
public name: string;
public static salary: number = 1000;
constructor(name: string) {
this.name = name;
}
}
Ας φτιάξουμε τώρα μια μέθοδο που εμφανίζει το συνολικό μισθό:
class User {
public name: string;
public static salary: number = 1000;
constructor(name: string) {
this.name = name;
}
getSalary(): number {
return User.salary; // προσπελαύνουμε με το όνομα της κλάσης
}
}
Ας φτιάξουμε τώρα μια μέθοδο που αλλάζει το συνολικό μισθό:
class User {
public name: string;
public static salary: number = 1000;
constructor(name: string) {
this.name = name;
}
getSalary(): number {
return User.salary;
}
setSalary(salary: number) {
User.salary = salary;
}
}
Οι στατικές ιδιότητες θα είναι κοινές για διαφορετικά αντικείμενα. Αυτό σημαίνει ότι όταν αλλάζουμε την ιδιότητα σε ένα αντικείμενο, θα αλλάξει και στο άλλο. Ας το ελέγξουμε.
Ας δημιουργήσουμε δύο αντικείμενα της κλάσης μας:
let user1: User = new User('john');
let user2: User = new User('eric');
Ας αλλάξουμε το μισθό για τον πρώτο χρήστη:
user1.setSalary(2000);
Ας ελέγξουμε ότι ο μισθός άλλαξε και για τον δεύτερο χρήστη:
console.log(user2.getSalary()); // 2000
Ας ελέγξουμε ότι ο μισθός άλλαξε επίσης στην ιδιότητα της ίδιας της κλάσης:
console.log(User.salary); // 2000
Στην κλάση Student προσθέστε μια στατική
ιδιότητα university. Εμφανίστε αυτήν την
ιδιότητα χωρίς δήλωση αντικειμένου.