diff --git a/src/deps/mixer.ts b/src/deps/mixer.ts index 4995fc9..2d9f5a4 100644 --- a/src/deps/mixer.ts +++ b/src/deps/mixer.ts @@ -49,10 +49,15 @@ export function Mixin(...args: C): C[number] & T { super(...constructorArgs); for (const mixin of args.slice(1)) { - const descriptors = getDescriptors(mixin).reverse(); + // @ts-expect-error + Object.assign(this, new mixin(...constructorArgs)); + const descriptors = getDescriptors(mixin).reverse().concat(Object.getOwnPropertyDescriptors(mixin)); for (const desc of descriptors) { for (const key in desc) { - if (key === 'constructor') continue; + if (key === 'constructor') { + Object.assign(this, new desc[key].value(...constructorArgs)); + continue; + } if (key in MixedClass.prototype) continue; const descriptor = desc[key];