From 3c40a0a96bd7fede20ed9e473a5c0c037b2f6e67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Sat, 3 Feb 2024 01:30:20 +0100 Subject: [PATCH] Fix --- src/trait.ts | 33 +++++++++++---------------------- 1 file changed, 11 insertions(+), 22 deletions(-) diff --git a/src/trait.ts b/src/trait.ts index 37951c2..6309935 100644 --- a/src/trait.ts +++ b/src/trait.ts @@ -3,7 +3,7 @@ import { AbstractClass, Class, Opaque } from "type-fest" import { StaticMembers } from "./util" -type AddAbstractToImplClass< +type AddAbstractToImpl< Impl extends Class, Abstract extends object, > = ( @@ -14,26 +14,15 @@ type AddAbstractToImplClass< StaticMembers ) -type RemoveAbstractFromImplInstance< - ImplInstanceWithAbstractMembers extends AbstractMembers, - AbstractMembers extends object, -> = ( - Omit -) - -type RemoveAbstractFromImplClass< - ImplWithAbstractMembers extends Class, - AbstractMembers extends object, +type RemoveAbstractFromImpl< + ImplWithAbstract extends Class, + Abstract extends object, > = ( Class< - RemoveAbstractFromImplInstance< - InstanceType, - AbstractMembers - >, - - ConstructorParameters + Omit, keyof Abstract>, + ConstructorParameters > & - StaticMembers + StaticMembers ) @@ -46,7 +35,7 @@ export type Trait< Opaque<{ readonly apply: TraitApplier< Abstract, - AddAbstractToImplClass + AddAbstractToImpl > }, TraitTag> ) @@ -83,7 +72,7 @@ export interface TraitImplInstanceFn extends Fn { export type TraitClass = ( T extends Trait - ? AddAbstractToImplClass + ? AddAbstractToImpl : never ) @@ -94,7 +83,7 @@ export interface TraitClassFn extends Fn { export type TraitInstance = ( T extends Trait ? InstanceType< - AddAbstractToImplClass + AddAbstractToImpl > : never ) @@ -122,7 +111,7 @@ export function trait< apply: TraitApplier ) => Trait< Abstract, - RemoveAbstractFromImplClass + RemoveAbstractFromImpl > ) { return apply => ({ apply }) as any