Statyczne właściwości w TypeScript
Przyjrzyjmy się, jak odwoływać się do statycznych właściwości wewnątrz obiektów.
Załóżmy, że mamy następującą klasę ze statyczną właściwością:
class User {
public name: string;
public static salary: number = 1000;
constructor(name: string) {
this.name = name;
}
}
Stwórzmy teraz metodę wyświetlającą ogólne wynagrodzenie:
class User {
public name: string;
public static salary: number = 1000;
constructor(name: string) {
this.name = name;
}
getSalary(): number {
return User.salary; // odwołujemy się przez nazwę klasy
}
}
Stwórzmy teraz metodę zmieniającą ogólne wynagrodzenie:
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;
}
}
Statyczne właściwości będą wspólne dla różnych obiektów. Oznacza to, że przy zmianie właściwości w jednym obiekcie, zmieni się ona również w drugim. Sprawdźmy to.
Stwórzmy dwa obiekty naszej klasy:
let user1: User = new User('john');
let user2: User = new User('eric');
Zmieńmy wynagrodzenie dla pierwszego użytkownika:
user1.setSalary(2000);
Sprawdźmy, czy wynagrodzenie zmieniło się również dla drugiego użytkownika:
console.log(user2.getSalary()); // 2000
Sprawdźmy, czy wynagrodzenie zmieniło się również w właściwości samej klasy:
console.log(User.salary); // 2000
Do klasy Student dodaj statyczną
właściwość university. Wyświetl tę
właściwość bez deklarowania obiektu.