Статични свойства в 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. Изведете това
свойство без деклариране на обект.