Практика применения типов, которую наблюдал я, обычно складывается по такому сценарию:
1. Типы определяются по предметной области и предохраняют от кучи банальных ошибок
2. Типы начинают выстраиваться в достаточно сложную иерархию, всё ещё соответствуют области, но в одной голове помещаются уже с трудом
3. Начинают делаться допущения поперёк типов, чтобы ускорить разработку
-1. Предметная область начинает определяться типами, корректируясь до реальной в головах сотрудников
В идеале бы до конца этого сценария доходить не надо 😐