TypeScriptでの静的プロパティ

オブジェクト内部で静的プロパティにどのようにアクセスするかを見てみましょう。

次のような静的プロパティを持つクラスがあるとします:

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

では、総給与額を出力するメソッドを作成してみましょう:

typescriptclass User {
  public name: string;
  public static salary: number = 1000;
  
  constructor(name: string) {
    this.name = name;
  }
  
  getSalary(): number {
    return User.salary; // クラス名でアクセス
  }
}

次に、総給与額を変更するメソッドを作成してみましょう:

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

静的プロパティは異なるオブジェクト間で共有されます。つまり、あるオブジェクトでプロパティを変更すると、別のオブジェクトでも変更されるということです。これを確認してみましょう。

このクラスから2つのオブジェクトを作成します:

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

最初のユーザーの給与を変更してみましょう:

typescriptuser1.setSalary(2000);

2番目のユーザーの給与も変更されているか確認します:

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

クラス自体のプロパティも変更されているか確認します:

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

クラス Student に静的プロパティ university を追加してください。オブジェクトを宣言せずにこのプロパティを出力してください。