概要: このチュートリアルでは、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); // 2
Code language: TypeScript (typescript)
実際には、Math
オブジェクトのように静的プロパティとメソッドを多数含むライブラリを見つけるでしょう。これには PI
、E
、… などの静的プロパティと、abs()
、round()
などの静的メソッドがあります。
要約
- 静的プロパティとメソッドは、クラスのすべてのインスタンスで共有されます。
- プロパティまたはメソッドの前に
static
キーワードを使用して、静的にします。
このチュートリアルは役に立ちましたか?