From f619f47fc351f9d828d173d687b69f5deab102ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Thu, 28 Dec 2023 05:21:00 +0100 Subject: [PATCH] Working inheritance traits --- src/tests-inheritance.ts | 7 ++++--- src/trait-inheritance.ts | 5 ++++- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/tests-inheritance.ts b/src/tests-inheritance.ts index 0205309..85fd68f 100644 --- a/src/tests-inheritance.ts +++ b/src/tests-inheritance.ts @@ -20,8 +20,8 @@ const Permissible = trait(Parent => { static readonly defaultPermissions: string[] = [] permissions: string[] = [] - constructor() { - super() + constructor(...args: any[]) { + super(...args) console.log("Permissible constructor") } } @@ -42,4 +42,5 @@ class User extends UserProto { } const user1 = new User(1n) -user1.equals(user1) +console.log(user1) +console.log(user1.equals(user1)) diff --git a/src/trait-inheritance.ts b/src/trait-inheritance.ts index cee3cb1..569cdea 100644 --- a/src/trait-inheritance.ts +++ b/src/trait-inheritance.ts @@ -36,7 +36,10 @@ export function extendsAndExpresses< traits: Traits, ) { - return extend as unknown as ( + return traits.reduce( + (previous, trait) => trait(previous), + extend, + ) as ( AbstractClass< InstanceType & UnionToIntersection<