There is `clojure/core.typed` if you want types or `clojure.spec` if you want specs. What I love in Clojure (and in any lisp for that matter) is that you can imlement language features if you need them and the language itself provides you with many but only if you need it (optional dependencies). This gives you flexibility which you can only dream of if you use scala.
I know of clojure typed. But im worried it needs to be first class. I.e i need all my dependencies to be typed, as that is my api and it usually covers large surface.
Id also be careful with your 2nd statement. Scala has macros.
Im happy clojure is on the block, dont get me wrong :) each to their own. Type system is incredibly important to me and my productivity.