Duck typing is so fragile… Once you have implementations that are depending on your naming or property structure, you can’t update the model without breaking them all.
If you use a real type, you never have to worry about this.
If you use a real type, you never have to worry about this.
If you're duck typing, you find this out in the best case when your unit tests exercise it, and in the worst case by a support call when that 1/1000 error handling path finally gets exercised in production.
Slowly but surely, new languages are starting to develop with static duck typing. Implicit interfaces if you will.
What do you mean by this? Macros? C++ templates?