2024-10-05
🔷TypeScriptの学習_8 (クラス4 - static修飾子)
static修飾子とは
staticはクラスのメンバー(プロパティ、メソッド)に付与するキーワード
static修飾子がついたメンバーをstaticメンバーや静的メンバーという
static修飾子がついたメソッドをstaticメソッドや静的メソッドという
static修飾子がついたプロパティをstaticプロパティや静的プロパティという
staticメンバーはインスタンス(クラスから作成されたオブジェクト)ではなく、クラスそのものから直接アクセスする
通常のメンバー(インスタンスメンバー)はインスタンスからアクセスする必要があるが、staticメンバーはインスタンスからはアクセスができない
code:staticの定義とアクセス
class TestClass {
// staticメンバーの定義
static staticProperty = "静的プロパティです";
static staticMethod() {
return "静的メソッドです";
}
}
// staticメンバーにアクセス(インスタンスは作る必要がない)
console.log(TestClass.staticProperty);
console.log(TestClass.staticMethod());
staticメンバー内でのthisはクラス自体を指す
通常のメソッド内でのthisはインスタンスを指すので通常のメソッドとは挙動が異なる
staticメンバーは継承した子クラスにも引き継がれる
元となる親クラスではなく、子クラス自体に関連付けられる
なお、子クラス独自のstaticメンバーを持つこともできる
statiscメンバーはクラスの初期化時に1度だけ初期化され、インスタンスが複数あってもすべてのインスタンス間で共有される
※クラスの初期化:staticメンバーが初めて参照された際に一度だけ初期化が行われる
staticメンバーは具体的にどういう場面で使われる?
staticメンバーはクラスに依存しない機能やデータを扱うとき、もしくはインスタンス間で共有すべき情報を保持したいときに使われる
ユーティリティ関数
staticメソッドはユーティリティ関数に使用できる
例)Math.random()
クラスのインスタンスとは無関係な汎用的な処理を行いたい場合に使用される
カウンターやトラッキング機能
インスタンスの作成回数の追跡のような、全体で共有すべきデータを管理する際にstaticプロパティが使用される
インスタンスごとではなく、クラス全体で1つのデータを共有する
設定情報の保持
アプリ全体などで使用する共通の設定情報を持たせるためにstaticプロパティが使用できる
共通データの保持
インスタンス間で共通のデータが保持できるため、インスタンス間で共有したいデータがある時にstaticプロパティが使用できる
#TypeScript