I am also interested in this - I am trying to build a generic functional API without requiring a huge investment in boilerplate interfaces/classes. Is there a fundamental reason this is not possible?
Instead, I am forced to create each of these types as their own interface which is quite tedious and difficult to scale. Scaling in my case is having several different frameworks using this base “clause” concept with their own specific type bounds. If typealiases supported type parameter bounds, this becomes trivial. As it is, I have to explicitly create subinterfaces (and potentially flatten the hierarchy, if I add specializations of the base Clause type, into each consumer implementation)
I wish I had noticed this request earlier this year - I’ve been looking for a solution for a while (since May) but hadn’t noticed any other similar requests – now I’ve seen this and several other posts asking for the same thing.