From 9b765c1fc5daa49ff79dd977a7f17940e0b0be44 Mon Sep 17 00:00:00 2001 From: MARCROCK22 Date: Sun, 25 Aug 2024 19:01:52 +0000 Subject: [PATCH] fix(mixer): toString --- src/deps/mixer.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/deps/mixer.ts b/src/deps/mixer.ts index e4353ee..72fbdff 100644 --- a/src/deps/mixer.ts +++ b/src/deps/mixer.ts @@ -22,6 +22,7 @@ function getDescriptors(c: TypeClass) { * @returns The mixed class. */ export function Mixin(...args: C): C[number] & T { + const ignoreOverwriteToString = Object.keys(Object.getOwnPropertyDescriptors(args[0].prototype)).includes('toString'); function MixedClass(...constructorArgs: any[]) { for (const i of args) { const descriptors = getDescriptors(i); @@ -31,9 +32,13 @@ export function Mixin(...args: C): C[number] & T { for (const descriptorK in j) { if (descriptorK === 'constructor') continue; - if (descriptorK in MixedClass.prototype) continue; + if (descriptorK in MixedClass.prototype && descriptorK !== 'toString') continue; const descriptor = j[descriptorK]; if (descriptor.value) { + if (descriptorK === 'toString' && ignoreOverwriteToString) { + MixedClass.prototype[descriptorK] = args[0].prototype.toString; + continue; + } MixedClass.prototype[descriptorK] = descriptor.value; continue; }