Statička svojstva u TypeScript-u

Pogledajmo kako da pristupimo statičkim svojstvima unutar objekata.

Neka imamo sledeću klasu sa statičkim svojstvom:

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

Sada napravimo metod koji prikazuje ukupnu platu:

typescriptclass User {
  public name: string;
  public static salary: number = 1000;
  
  constructor(name: string) {
    this.name = name;
  }
  
  getSalary(): number {
    return User.salary; // pristupamo preko imena klase
  }
}

Sada napravimo metod koji menja ukupnu platu:

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

Statička svojstva će biti zajednička za različite objekte. To znači da će se, kada se svojstvo promeni u jednom objektu, promeniti i u drugom. Proverimo ovo.

Kreirajmo dva objekta naše klase:

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

Hajde da promenimo platu za prvog korisnika:

typescriptuser1.setSalary(2000);

Proverimo da li se plata promenila i za drugog korisnika:

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

Proverimo da li se plata takođe promenila u svojstvu same klase:

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

U klasu Student dodajte statičko svojstvo university. Prikažite ovo svojstvo bez deklaracije objekta.