Возвращаясь к вопросу типов - типы сами по себе не так полезны для разработчика. А вот возможность системы типов и языка их выводить из выражений - мощная вещь. С классами возможности вывода типов сильно ограничены
да, конечно хочется, чтобы типы сами определялись, а не прописывать все ручками.