@iceylan/type.js

Allows to define types, abstract types, interfaces and traits. Types can be extends by other types, uses traits and implements interfaces in multiple manner. Also, interfaces and traits can extends their kinds.

polytype

Dynamic multiple inheritance for JavaScript and TypeScript. Without mixins.