From 15c5548fde8054020598b7147dfcf9272aea4270 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Sat, 17 Feb 2024 03:31:46 +0100 Subject: [PATCH] Fixed TraitBuilder --- src/TraitBuilder.ts | 27 +++++++++++++++++---------- src/tests.ts | 17 +++++++++++++++++ 2 files changed, 34 insertions(+), 10 deletions(-) diff --git a/src/TraitBuilder.ts b/src/TraitBuilder.ts index acba811..3663194 100644 --- a/src/TraitBuilder.ts +++ b/src/TraitBuilder.ts @@ -29,19 +29,21 @@ type ExtendStaticAbstractSuper = ( type TraitApplierSuperTag = "@thilawyn/traitify-ts/Super" type RemoveAbstractFromImplClass< - ImplClassWithAbstract extends ( - Class & - StaticAbstract & - { _tag: TraitApplierSuperTag } - ), - Abstract extends object, - StaticAbstract extends object, + ImplClassWithAbstract extends AbstractClass, + Abstract extends AbstractClass, > = ( Class< - Omit, keyof Abstract>, + Omit< + InstanceType, + keyof InstanceType + >, + ConstructorParameters > & - Omit, keyof StaticAbstract | "_tag"> + Omit< + StaticMembers, + keyof StaticMembers | "_tag" + > ) @@ -130,7 +132,12 @@ export class TraitBuilder< this.traitSuperExpression, this.traitAbstract, this.traitStaticAbstract, - apply as unknown as (Super: AbstractClass) => RemoveAbstractFromImplClass, + apply as unknown as (Super: AbstractClass) => RemoveAbstractFromImplClass< + ImplClassWithAbstract, + TraitClass< + Trait + > + >, ) } diff --git a/src/tests.ts b/src/tests.ts index eb3f498..117a19a 100644 --- a/src/tests.ts +++ b/src/tests.ts @@ -87,3 +87,20 @@ class User extends exp.extends implements Implements { } console.log(new User()) + + +// class Test1 { +// prop1: string = "ouient" +// prop2: bigint = 1n +// } + +// class Test2 extends Test1 { +// readonly prop1 = "juif" +// prop3: number = 69 +// } + +// type PureKeys = { +// [K in keyof T]: K extends keyof U ? T[K] extends U[K] ? never : K : K; +// }[keyof T] + +// type T = PureKeys