Здравствуйте, igna, Вы писали:
I>Затем, что типы не только для эффективности, но и для защиты от некоторых ошибок и более точного документирования.
Из всего можно сделать паранойю. В том числе и из документирования, и из защиты.
По факту код написанный в функциональном стиле, с минимумом деклараций типов, в итоге оказывается намного более простым в понимании, отладке и сопровождении.
Так что типы хороши в интерфейсах и, пожалуй, в описании функций (пусть даже и вложенных), но когда их слишком много, результат от них получается ровно противоположенный ожидаемому.
На самом деле если мы не указываем типы внутри методов, то мы оперируем их более абстрактными интерфейсами. В эти интерфейсы входят только те методы, что были применены внутри тела метода. Это позволяет смотреть на код более абстрактно и безболезненно заменять типы на их аналоги.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.