Typescript-objects
TypeScript-オブジェクト
- オブジェクト*は、キーと値のペアのセットを含むインスタンスです。 値は、スカラー値または関数、または他のオブジェクトの配列です。 構文は以下のとおりです-
構文
上記のように、オブジェクトにはスカラー値、関数、配列やタプルなどの構造を含めることができます。
例:オブジェクトリテラル表記
コンパイル時に、JavaScriptで同じコードが生成されます。
上記のコードの出力は次のとおりです-
TypeScriptタイプテンプレート
JavaScriptでオブジェクトリテラルを次のように作成したとします-
オブジェクトに値を追加する場合、JavaScriptを使用して必要な変更を加えることができます。 後でpersonオブジェクトに関数を追加する必要があるとします。これがこれを行う方法です。
Typescriptで同じコードを使用すると、コンパイラーはエラーを返します。 これは、Typescriptでは、具象オブジェクトに型テンプレートが必要だからです。 Typescriptのオブジェクトは、特定の型のインスタンスでなければなりません。
これは、宣言でメソッドテンプレートを使用することで解決できます。
例:Typescript Typeテンプレート
コンパイル時に、JavaScriptで同じコードが生成されます。
上記のコードの出力は次のとおりです-
オブジェクトをパラメーターとして関数に渡すこともできます。
例:関数パラメーターとしてのオブジェクト
この例では、オブジェクトリテラルを宣言しています。 関数式は、personオブジェクトを渡して呼び出されます。
コンパイル時に、次のJavaScriptコードが生成されます。
その出力は次のとおりです-
匿名オブジェクトをその場で作成して渡すことができます。
例:匿名オブジェクト
コンパイル時に、次のJavaScriptコードが生成されます。
その出力は次のとおりです-
ダックタイピング
ダックタイピングでは、2つのオブジェクトが同じプロパティセットを共有している場合、2つのオブジェクトは同じタイプであると見なされます。 ダックタイピングは、オブジェクトの実際のタイプではなく、オブジェクト内の特定のプロパティの存在を検証して、適合性をチェックします。 概念は一般的に次のフレーズで説明されています-
「アヒルのように歩き、アヒルのように泳ぎ、カモのように鳴く鳥を見るとき、私はその鳥をアヒルと呼びます。」
TypeScriptコンパイラは、型の安全性を保ちながら、オブジェクトをその場で作成できるようにするダックタイピングシステムを実装しています。 次の例は、インターフェイスを明示的に実装していないが、必要なすべてのメンバーを含むオブジェクトを関数に渡す方法を示しています。