ダックタイピング
「アヒルのように歩き、アヒルのように鳴くなら、それはアヒルだ」。動的型付け言語では、型に関係なく、適切なメソッドや属性を持っていれば十分だという考え方。
Python、Ruby、JavaScriptで典型的だ。def play(audio): が要求するのは、audio が play() メソッドを持つことだけで、AudioBaseを継承している必要はない。Pythonの __iter__、__len__、__call__ はダックタイピングのプロトコルである。
静的型付け言語での対応物は構造的部分型(TypeScriptの { play(): void })や、トレイト/プロトコル(Rust、Swift)だ。トレードオフは、素早い反復とコンパイル時の安全性の間にある。PEP 544(Pythonのプロトコル)は、構造的部分型をPythonに持ち込む。