Statiska egenskaper i TypeScript

Låt oss titta på hur man kommer åt statiska egenskaper inuti objekt.

Låt oss säga att vi har följande klass med en statisk egenskap:

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

Låt oss nu skapa en metod som visar den totala lönen:

typescriptclass User {
  public name: string;
  public static salary: number = 1000;
  
  constructor(name: string) {
    this.name = name;
  }
  
  getSalary(): number {
    return User.salary; // vi hänvisar till klassens namn
  }
}

Låt oss nu skapa en metod som ändrar den totala lönen:

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

Statiska egenskaper kommer att vara gemensamma för olika objekt. Det betyder att när egenskapen ändras i ett objekt, så kommer den att ändras i det andra också. Låt oss kontrollera detta.

Låt oss skapa två objekt av vår klass:

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

Låt oss ändra lönen för den första användaren:

typescriptuser1.setSalary(2000);

Låt oss kontrollera att lönen ändrades även för den andra användaren:

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

Låt oss kontrollera att lönen också ändrades i klassens egna egenskap:

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

Till klassen Student lägg till en statisk egenskap university. Visa denna egenskap utan att deklarera ett objekt.