Propiedades estáticas en TypeScript

Veamos cómo acceder a propiedades estáticas dentro de objetos.

Supongamos que tenemos la siguiente clase con una propiedad estática:

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

Ahora creemos un método que muestre el salario general:

typescriptclass User {
  public name: string;
  public static salary: number = 1000;
  
  constructor(name: string) {
    this.name = name;
  }
  
  getSalary(): number {
    return User.salary; // accedemos mediante el nombre de la clase
  }
}

Ahora creemos un método que modifique el salario general:

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

Las propiedades estáticas serán comunes para diferentes objetos. Esto significa que al cambiar la propiedad en un objeto, también cambiará en el otro. Comprobemos esto.

Creemos dos objetos de nuestra clase:

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

Cambiemos el salario para el primer usuario:

typescriptuser1.setSalary(2000);

Comprobemos que el salario también cambió para el segundo usuario:

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

Comprobemos que el salario también cambió en la propiedad de la clase misma:

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

En la clase Student agregue una propiedad estática university. Muestre esta propiedad sin declarar un objeto.