Feedback on Reddit from "oorza" was:
-
You sidestepped the diamond problem by flattening the type hierarchy, but provide no facilities for even raising a warning when names collide within mixins. You should not allow a class that already implements a method to be passed to your class factory that also implements it. You can type this.
-
This only works if the objects or classes themselves are being passed covariantly. An invariant or contravariant method that would otherwise accept a class will not accept it post “mixing in.”
Traits-TS should attempt to address those issues if technically possible at all.