JavaScript multiple inheritance
const merge = (...classes) => {
class M {}
const prototypes = classes.map((cls) => {
const keys = Object.getOwnPropertyNames(cls.prototype).filter((key) => key !== 'constructor');
keys.forEach((key) => {
M.prototype[key] = cls.prototype[key];
});
});
return M;
};
class A {
foo() {
console.log('A');
}
}
class B {
bar() {
console.log('B');
}
}
class C extends merge(A, B) {}
console.log(C);
new C().foo();
new C().bar();