Statiškos savybės TypeScript

Pažiūrėkime, kaip kreiptis į statinės savybes objektų viduje.

Tarkime, kad turime šią klasę su statine savybe:

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

Dabar sukurkime metodą, kuris išveda bendrą atlyginimą:

typescriptclass User {
  public name: string;
  public static salary: number = 1000;
  
  constructor(name: string) {
    this.name = name;
  }
  
  getSalary(): number {
    return User.salary; // kreipiamės pagal klasės pavadinimą
  }
}

Dabar sukurkime metodą, kuris keičia bendrą atlyginimą:

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

Statinės savybės bus bendros skirtingiems objektams. Tai reiškia, kad pakeitus savybę viename objekte, ji pasikeis ir kitame. Patikrinkime tai.

Sukurkime du mūsų klasės objektus:

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

Pakeiskime atlyginimą pirmam vartotojui:

typescriptuser1.setSalary(2000);

Patikrinkime, ar atlyginimas pasikeitė ir antram vartotojui:

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

Patikrinkime, ar atlyginimas taip pat pasikeitė pačios klasės savybėje:

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

Į klasę Student pridėkite statinę savybę university. Išveskite šią savybę be objekto deklaravimo.