TypeScript のアヒル型

WBOY
WBOY転載
2023-09-11 23:25:06878ブラウズ

TypeScript 中的 Duck 类型

ダックタイピングとは何ですか?

まず第一に、ダックタイピングとは何かを知る必要があります。プログラマーによれば、オブジェクトの型がクラスではなくその動作 (メソッドやプロパティなど) によって決定される状況を「ダック タイピング」と呼びます。

TypeScript でのダックタイピング

TypeScript でインターフェイスを使用すると、ダック タイピングが可能になります。インターフェイスとは、オブジェクトが属している必要がある型を記述するメソッドと特性のセットを意味します。

たとえば、インターフェイスで関数が定義されている場合、「myFunc()」という名前のメソッドを持つオブジェクトは、そのクラスに関係なく、特定の型であると見なされます。 2 つのオブジェクトが同じ動作を共有し、互換的に使用できる場合、コードの柔軟性が向上します。

ダックタイピングでは、オブジェクトの実際の型ではなくメソッドとプロパティを考慮して、タスクに対するオブジェクトの適合性を評価することに重点を置きます。インターフェイスは、オブジェクトを特定の目的のために「ダックタイプ」として扱う必要がある一連のプロパティとメソッドを説明します。

ダックタイピングの利点

ダックタイピングの主な利点の 1 つは、コードがより柔軟で再利用可能になることです。このコードは、特定の種類のオブジェクトだけでなく、必要なメソッドとプロパティを持つあらゆるオブジェクトに対して機能し、変更することなくさまざまな状況で使用できます。また、ダック タイピングは、単一のコード ベース内で異なるタイプのオブジェクトを交換可能に使用できるようにすることで、コードの再利用を向上させます。

ダックタイピングの例は TypeScript です。

次は、TypeScript でダック タイピングを使用する方法の例です -

オブジェクトに必要な動作を表すインターフェイスを定義します。例えば ​​-### リーリー

このインターフェイスを実装するクラスを作成します。例えば ​​-### リーリー

このクラスのインスタンスを作成し、インターフェイスによって定義された型として使用します。

リーリー

このインターフェースも実装する別のクラスを作成します -

リーリー

新しいクラス インスタンスを、インターフェイスで定義されているのと同じ型として使用します。

リーリー

ご覧のとおり、MallardDuck クラスとRubberDuck クラスはどちらも Duck インターフェイスを実装しており、アヒル変数を両方のクラスのインスタンスに割り当てることができます。型は、クラスで定義された動作 (メソッドとプロパティ) ではなく、インターフェイスによって決まります。

また、TypeScript では、typeof キーワードを使用して、実行時にオブジェクトの型と、オブジェクトに期待されるメソッドまたはプロパティがあるかどうかを確認できることにも注意してください。

###例###

この例では、Bird クラスと Plane クラスは Fly() メソッドを必要とする Flyable インターフェイスを実装しています。どちらの「ダック タイピング」も goFly() 関数で同じ意味で使用できます。この関数は、呼び出すことができる fly() メソッドがある限り、渡されるオブジェクトの実際の型を気にしません。

リーリー

コンパイルすると、次の JavaScript コードが生成されます -

リーリー ###出力###

上記のコードは次の出力を生成します -

リーリー ###例###

全体として、ダック タイピングは、同じメソッドとプロパティを持つ限り、異なる型のオブジェクトを互換的に使用できるようにする強力なプログラミング概念であり、TypeScript コードの柔軟性と再利用性が向上します。この例では、Driveable インターフェイス、Car クラスと Truck クラスが同じコンテンツを表示します。

リーリー

コンパイルすると、次の JavaScript コードが生成されます -

リーリー ###出力###

上記のコードは次の出力を生成します -

リーリー

ダックタイピングの背後にある主な考え方は、コードは特定のオブジェクトで動作するように作成されるのではなく、必要なメソッドとプロパティを持つ任意のオブジェクトで動作するように作成されるべきであるということです。これにより、コードの柔軟性と再利用性が向上し、コードを変更せずにさまざまなタイプのオブジェクトを互換的に使用できるようになります。

以上がTypeScript のアヒル型の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。