Thuộc tính tĩnh trong TypeScript

Hãy xem cách truy cập vào các thuộc tính tĩnh bên trong các đối tượng.

Giả sử chúng ta có lớp sau với một thuộc tính tĩnh:

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

Bây giờ hãy tạo một phương thức hiển thị mức lương chung:

typescriptclass User {
  public name: string;
  public static salary: number = 1000;
  
  constructor(name: string) {
    this.name = name;
  }
  
  getSalary(): number {
    return User.salary; // truy cập thông qua tên lớp
  }
}

Bây giờ hãy tạo một phương thức thay đổi mức lương chung:

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

Các thuộc tính tĩnh sẽ được chia sẻ chung cho các đối tượng khác nhau. Điều này có nghĩa là khi thay đổi thuộc tính trong một đối tượng, nó sẽ thay đổi trong đối tượng khác. Hãy kiểm tra điều này.

Tạo hai đối tượng từ lớp của chúng ta:

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

Hãy thay đổi mức lương cho người dùng đầu tiên:

typescriptuser1.setSalary(2000);

Kiểm tra xem mức lương có thay đổi cho người dùng thứ hai không:

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

Kiểm tra xem mức lương cũng đã thay đổi trong thuộc tính của chính lớp chưa:

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

Thêm thuộc tính tĩnh university vào lớp Student. Hiển thị thuộc tính này mà không cần khai báo đối tượng.