Вопросы к Поиску с Алисой
Утиная типизация и структурная типизация отличаются подходами к определению совместимости типов объектов в объектно-ориентированном программировании. lectures.ostrov.ski
Утиная типизация (англ. duck typing) — вид динамической типизации, при которой корректность использования объекта определяется набором его методов и свойств, а не типом. lectures.ostrov.ski При таком подходе считается, что объект реализует интерфейс, если он содержит все методы этого интерфейса, независимо от связей в иерархии наследования и принадлежности к какому-либо конкретному классу. ru.wikipedia.org
Структурная типизация — вид системы типов, при которой совместимость и эквивалентность типов определяется на основе внутренней структуры объектов во время компиляции. lectures.ostrov.ski В этом случае об объектном типе думают как об описании структуры, которое накладывает ограничения на присваиваемые значения. code-basics.com
Таким образом, при утиной типизации важнее, как объекты себя ведут и как работают, а при структурной типизации — их внутренняя структура.
Некоторые языки программирования, где используется утиная типизация: Python, Perl, Ruby, JavaScript, Go, Scala, Objective-C. thecode.media Языки со структурной типизацией: C++ (шаблоны), функциональные языки (Haskell, ML). lectures.ostrov.ski