Статичка својства у TypeScript-у

Хајде да погледамо како да приступамо статичким својствима унутар објеката.

Нека имамо следећу класу са статичким својством:

typescriptclass User {
  public name: string;
  public static salary: number = 1000;
  
  constructor(name: string) {
    this.name = name;
  }
}

Сада ћемо направити метод који приказује укупну плату:

typescriptclass User {
  public name: string;
  public static salary: number = 1000;
  
  constructor(name: string) {
    this.name = name;
  }
  
  getSalary(): number {
    return User.salary; // приступамо преко имена класе
  }
}

Сада ћемо направити метод који мења укупну плату:

typescriptclass 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;
  }
}

Статичка својства ће бити заједничка за различите објекте. То значи да ће се, када се промени својство у једном објекту, оно променити и у другом. Проверимо то.

Направимо два објекта наше класе:

typescriptlet user1: User = new User('john');
let user2: User = new User('eric');

Хајде да променимо плату за првог корисника:

typescriptuser1.setSalary(2000);

Проверимо да ли се плата променила и за другог корисника:

typescriptconsole.log(user2.getSalary()); // 2000

Проверимо да ли се плата такође променила у својству саме класе:

typescriptconsole.log(User.salary); // 2000
Задание 1

У класу Student додајте статичко својство university. Прикажите ово својство без креирања објекта.