概要: このチュートリアルでは、TypeScript の静的プロパティとメソッドについて学習します。
静的プロパティ
インスタンスプロパティとは異なり、静的プロパティはクラスのすべてのインスタンスで共有されます。
静的プロパティを宣言するには、static キーワードを使用します。静的プロパティにアクセスするには、className.propertyName 構文を使用します。たとえば
class Employee {
static headcount: number = 0;
constructor(
private firstName: string,
private lastName: string,
private jobTitle: string) {
Employee.headcount++;
}
}Code language: TypeScript (typescript)この例では、headcount はゼロに初期化される静的プロパティです。新しいオブジェクトが作成されるたびに、その値が 1 ずつ増加します。
以下では 2 つの Employee オブジェクトを作成し、headcount プロパティの値を表示します。期待どおり 2 が返されます。
let john = new Employee('John', 'Doe', 'Front-end Developer');
let jane = new Employee('Jane', 'Doe', 'Back-end Developer');
console.log(Employee.headcount); // 2
Code language: TypeScript (typescript)静的メソッド
静的プロパティと同様に、静的メソッドもクラスのインスタンス間で共有されます。静的メソッドを宣言するには、メソッド名の前に static キーワードを使用します。たとえば
class Employee {
private static headcount: number = 0;
constructor(
private firstName: string,
private lastName: string,
private jobTitle: string) {
Employee.headcount++;
}
public static getHeadcount() {
return Employee.headcount;
}
}Code language: TypeScript (typescript)この例では
- まず、
headcount静的プロパティのアクセス修飾子をpublicからprivateに変更して、新しいEmployeeオブジェクトを作成せずにクラスの外からその値を変更できないようにします。 - 次に、
headcount静的プロパティの値を返すgetHeadcount()静的メソッドを追加します。
静的メソッドを呼び出すには、className.staticMethod() 構文を使用します。たとえば
let john = new Employee('John', 'Doe', 'Front-end Developer');
let jane = new Employee('Jane', 'Doe', 'Back-end Developer');
console.log(Employee.getHeadcount); // 2Code language: TypeScript (typescript)実際には、Math オブジェクトのように静的プロパティとメソッドを多数含むライブラリを見つけるでしょう。これには PI、E、… などの静的プロパティと、abs()、round() などの静的メソッドがあります。
要約
- 静的プロパティとメソッドは、クラスのすべてのインスタンスで共有されます。
- プロパティまたはメソッドの前に
staticキーワードを使用して、静的にします。
このチュートリアルは役に立ちましたか?