Typescript-classes
TypeScript-クラス
TypeScriptはオブジェクト指向のJavaScriptです。 TypeScriptは、クラス、インターフェイスなどのオブジェクト指向プログラミング機能をサポートしています。 OOPに関するクラスは、オブジェクトを作成するための青写真です。 クラスは、オブジェクトのデータをカプセル化します。 Typescriptは、クラスと呼ばれるこの概念の組み込みサポートを提供します。 JavaScript ES5以前はクラスをサポートしていませんでした。 TypescriptはES6からこの機能を取得します。
クラスを作成する
classキーワードを使用して、TypeScriptでクラスを宣言します。 同じための構文は以下のとおりです-
構文
classキーワードの後にクラス名が続きます。 クラスに名前を付けるときは、識別子の規則を考慮する必要があります。
クラス定義には、次のものを含めることができます-
- フィールド-フィールドは、クラスで宣言された変数です。 フィールドはオブジェクトに関するデータを表します
- コンストラクタ-クラスのオブジェクトにメモリを割り当てる責任があります
- 関数-関数はオブジェクトが実行できるアクションを表します。 また、メソッドと呼ばれることもあります
これらのコンポーネントをまとめて、クラスのデータメンバーと呼びます。
タイプスクリプトのクラスPersonを考えてください。
コンパイル時に、次のJavaScriptコードが生成されます。
例:クラスの宣言
この例では、クラスCarを宣言しています。 クラスにはengineという名前のフィールドがあります。 var キーワードは、フィールドの宣言中には使用されません。 上記の例では、クラスのコンストラクターを宣言しています。
コンストラクターは、クラスの変数の初期化を担当するクラスの特別な関数です。 TypeScriptは、constructorキーワードを使用してコンストラクターを定義します。 コンストラクターは関数であるため、パラメーター化できます。
_disp()_は単純な関数定義です。 ここではfunctionキーワードは使用されないことに注意してください。
コンパイル時に、次のJavaScriptコードが生成されます。
インスタンスオブジェクトの作成
クラスのインスタンスを作成するには、 new キーワードにクラス名を続けて使用します。 同じための構文は以下のとおりです-
構文
- new キーワードはインスタンス化を担当します。
- 式の右側は、コンストラクターを呼び出します。 パラメーター化されている場合、コンストラクターに値を渡す必要があります。
例:クラスのインスタンス化
属性と機能へのアクセス
クラスの属性と機能は、オブジェクトを介してアクセスできます。 使用 ' 。 」クラスのデータメンバーにアクセスするためのドット表記(ピリオドと呼ばれる)。
例:それらをまとめる
コンパイル時に、次のJavaScriptコードが生成されます。
上記のコードの出力は次のとおりです-
クラスの継承
TypeScriptは、継承の概念をサポートしています。 継承とは、既存のクラスから新しいクラスを作成するプログラムの機能です。 新しいクラスを作成するために拡張されたクラスは、親クラス/スーパークラスと呼ばれます。 新しく作成されたクラスは、子/サブクラスと呼ばれます。
クラスは、「extends」キーワードを使用して別のクラスから継承します。 子クラスは、親クラスのプライベートメンバーとコンストラクターを除くすべてのプロパティとメソッドを継承します。
構文
ただし、TypeScriptは多重継承をサポートしていません。
例:クラスの継承
コンパイル時に、次のJavaScriptコードが生成されます。
上記のコードの出力は次のとおりです-
上記の例では、クラスShapeを宣言しています。 クラスはCircleクラスによって拡張されます。 クラス間に継承関係があるため、子クラス、つまり クラスCarは、その親クラス属性への暗黙的なアクセスを取得します。 エリア。
継承は次のように分類できます-
- シングル-すべてのクラスは、最大で1つの親クラスから拡張できます。
- Multiple -クラスは複数のクラスから継承できます。 TypeScriptは多重継承をサポートしていません。
- マルチレベル-次の例は、マルチレベル継承の仕組みを示しています。
例
クラスLeafは、マルチレベルの継承により、RootクラスとChildクラスから属性を派生します。
コンパイル時に、次のJavaScriptコードが生成されます。
その出力は次のとおりです-
出力
TypeScript─クラスの継承とメソッドのオーバーライド
メソッドのオーバーライドは、子クラスがスーパークラスのメソッドを再定義するメカニズムです。 次の例は同じことを示しています-
superキーワードは、クラスの直接の親を参照するために使用されます。 キーワードを使用して、変数、プロパティ、またはメソッドのスーパークラスバージョンを参照できます。 行13は、doWork()関数のスーパークラスバージョンを呼び出します。
コンパイル時に、次のJavaScriptコードが生成されます。
上記のコードの出力は次のとおりです-
静的キーワード
staticキーワードは、クラスのデータメンバーに適用できます。 静的変数は、プログラムが実行を終了するまでその値を保持します。 静的メンバーはクラス名によって参照されます。
例
コンパイル時に、次のJavaScriptコードが生成されます。
上記のコードの出力は次のとおりです-
instanceof演算子
オブジェクトが指定されたタイプに属する場合、 instanceof 演算子はtrueを返します。
例
コンパイル時に、次のJavaScriptコードが生成されます。
上記のコードの出力は次のとおりです-
データ隠蔽
クラスは、他のクラスのメンバーに対するデータメンバーの可視性を制御できます。 この機能は、データの非表示またはカプセル化と呼ばれます。
オブジェクト指向では、アクセス修飾子またはアクセス指定子の概念を使用して、カプセル化の概念を実装します。 アクセス指定子/変更子は、その定義クラス外のクラスのデータメンバーの可視性を定義します。
TypeScriptでサポートされているアクセス修飾子は-
S.No. | Access Specifier & Description |
---|---|
1. |
public パブリックデータメンバーは、ユニバーサルアクセシビリティを備えています。 クラスのデータメンバーはデフォルトでパブリックです。 |
2. |
private プライベートデータメンバーは、これらのメンバーを定義するクラス内でのみアクセスできます。 外部クラスメンバーがプライベートメンバーにアクセスしようとすると、コンパイラはエラーをスローします。 |
3. |
protected 保護されたデータメンバーは、前のクラスと同じクラス内のメンバー、および子クラスのメンバーからアクセスできます。 |
例
次に、データの非表示がどのように機能するかを確認するための例を見てみましょう-
このクラスには、それぞれstr1とstr2の2つの文字列属性があり、それぞれパブリックメンバーとプライベートメンバーです。 クラスがインスタンス化されます。 この例は、プライベート属性str2がそれを宣言するクラスの外部からアクセスされるため、コンパイル時エラーを返します。
クラスとインターフェース
クラスはインターフェイスも実装できます。
クラスAgriLoanは、インターフェイスLoanを実装します。 したがって、クラスにバインドして、プロパティ interest をそのメンバーとして含めるようになりました。
コンパイル時に、次のJavaScriptコードが生成されます。
上記のコードの出力は次のとおりです-