во флоу нельзя передать собаку вместо кота, в тсе- можно, если у них по полям совпадение
да. это отличие номинал от структурал тайпинга. но это черты статики.
т.е. это отличие языков где вообще есть тайпчек.
а утиность вообще вне динамики не употребляется, поэтому не имеет никакого смысла.
единственный её смысл "обелить" питонку, сделать имидж. чтобы мартыханы не боялись передавать собаку туда где можно передать кота, при условии если они оба реализуют некий необьявленный нигде интерфейс. по сути это просто синоним безтиповости, т.е. внезапно динамики без утиной типизации и нет.
короче я реально много рисерчил и из всего мусора узнал что утиная типизация это просто такая индульгенция на нарушение Liskov Substitution Principle
она имеет небольшой смысл когда упоминается в контексте крестовых шаблонов. но это там реально фича, потому что это такая безтиповая интерпретация которая происходит в компайлтайме самих крестов