А как ты узнаешь, что она возвращает User? У тебя на выходе будет какая-то мапа и тебе придётся в репле смотреть что это за мапа. У меня претензия к тому, что нельзя заранее сказать что за мапа вернётся, какая у неё структура, вложенность и т.д. Можно сделать (defrecord User [...])
, и даже написать (defn auth ^User [...] (->User ...))
, но оно почему-то всё равно не проверяется в рантайме и я не видел на гитхабе что бы кто-то так делал
Если ты пишешь генератор всего – тогда просто встроить спеку (clojure.spec.alpha) в дизайн.
Если ты пишешь не генератор всего и не знаешь что тебе вернётся – это проблема дизайна. Можно использовать спеку как костыль, но это всё равно проблема дизайна.
В нашем культе считается что наилучшее средство от багов – дизайн. Hammock driven development. Подумать прежде чем писать. Спасает от всех видов багов, не только типизации.