まず第一に、ダックタイピングとは何かを知る必要があります。プログラマーによれば、オブジェクトの型がクラスではなくその動作 (メソッドやプロパティなど) によって決定される状況を「ダック タイピング」と呼びます。
TypeScript でインターフェイスを使用すると、ダック タイピングが可能になります。インターフェイスとは、オブジェクトが属している必要がある型を記述するメソッドと特性のセットを意味します。
たとえば、インターフェイスで関数が定義されている場合、「myFunc()」という名前のメソッドを持つオブジェクトは、そのクラスに関係なく、特定の型であると見なされます。 2 つのオブジェクトが同じ動作を共有し、互換的に使用できる場合、コードの柔軟性が向上します。
ダックタイピングでは、オブジェクトの実際の型ではなくメソッドとプロパティを考慮して、タスクに対するオブジェクトの適合性を評価することに重点を置きます。インターフェイスは、オブジェクトを特定の目的のために「ダックタイプ」として扱う必要がある一連のプロパティとメソッドを説明します。
ダックタイピングの主な利点の 1 つは、コードがより柔軟で再利用可能になることです。このコードは、特定の種類のオブジェクトだけでなく、必要なメソッドとプロパティを持つあらゆるオブジェクトに対して機能し、変更することなくさまざまな状況で使用できます。また、ダック タイピングは、単一のコード ベース内で異なるタイプのオブジェクトを交換可能に使用できるようにすることで、コードの再利用を向上させます。
次は、TypeScript でダック タイピングを使用する方法の例です -
オブジェクトに必要な動作を表すインターフェイスを定義します。例えば -### リーリー
このインターフェイスを実装するクラスを作成します。例えば -### リーリーこのクラスのインスタンスを作成し、インターフェイスによって定義された型として使用します。
リーリーこのインターフェースも実装する別のクラスを作成します -
リーリー新しいクラス インスタンスを、インターフェイスで定義されているのと同じ型として使用します。
リーリーご覧のとおり、MallardDuck クラスとRubberDuck クラスはどちらも Duck インターフェイスを実装しており、アヒル変数を両方のクラスのインスタンスに割り当てることができます。型は、クラスで定義された動作 (メソッドとプロパティ) ではなく、インターフェイスによって決まります。
また、TypeScript では、typeof キーワードを使用して、実行時にオブジェクトの型と、オブジェクトに期待されるメソッドまたはプロパティがあるかどうかを確認できることにも注意してください。
###例###この例では、Bird クラスと Plane クラスは Fly() メソッドを必要とする Flyable インターフェイスを実装しています。どちらの「ダック タイピング」も goFly() 関数で同じ意味で使用できます。この関数は、呼び出すことができる fly() メソッドがある限り、渡されるオブジェクトの実際の型を気にしません。
リーリー上記のコードは次の出力を生成します -
リーリー ###例###全体として、ダック タイピングは、同じメソッドとプロパティを持つ限り、異なる型のオブジェクトを互換的に使用できるようにする強力なプログラミング概念であり、TypeScript コードの柔軟性と再利用性が向上します。この例では、Driveable インターフェイス、Car クラスと Truck クラスが同じコンテンツを表示します。
リーリー上記のコードは次の出力を生成します -
リーリー以上がTypeScript のアヒル型の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。