From 3cf573386960a7360d450413f719acfc2c6b1756 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Fri, 9 Feb 2024 18:28:50 +0100 Subject: [PATCH] Fixed static abstract apply --- src/Trait.ts | 10 ++++++---- src/TraitExpression.ts | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/Trait.ts b/src/Trait.ts index c049304..1612d03 100644 --- a/src/Trait.ts +++ b/src/Trait.ts @@ -14,7 +14,9 @@ export type AddAbstractToImplClass< StaticAbstract extends {}, > = ( Class< - Abstract & InstanceType, + Abstract & + InstanceType, + ConstructorParameters > & StaticAbstract & @@ -22,7 +24,7 @@ export type AddAbstractToImplClass< ) export type RemoveAbstractFromImplClass< - ImplClassWithAbstract extends Class & { _tag: TraitApplierSuperTag }, + ImplClassWithAbstract extends Class & StaticAbstract & { _tag: TraitApplierSuperTag }, Abstract extends {}, StaticAbstract extends {}, > = ( @@ -153,11 +155,11 @@ export namespace Trait { export function trait< Abstract extends {}, StaticAbstract extends {}, - ImplClassWithAbstract extends Class & { _tag: TraitApplierSuperTag }, + ImplClassWithAbstract extends Class & StaticAbstract & { _tag: TraitApplierSuperTag }, >( abstract: Opaque, staticAbstract: Opaque, - apply: (Super: AbstractClass & { _tag: TraitApplierSuperTag }) => ImplClassWithAbstract, + apply: (Super: AbstractClass & StaticAbstract & { _tag: TraitApplierSuperTag }) => ImplClassWithAbstract, ) { return new Trait( emptyTraitExpression, diff --git a/src/TraitExpression.ts b/src/TraitExpression.ts index 0c0f0f0..d3ea079 100644 --- a/src/TraitExpression.ts +++ b/src/TraitExpression.ts @@ -55,7 +55,7 @@ export class TraitExpression< This extends TraitExpression, SubtraitAbstract extends Implements, SubtraitStaticAbstract extends ImplementsStatic, - SubtraitImplClassWithAbstract extends Class & { _tag: TraitApplierSuperTag }, + SubtraitImplClassWithAbstract extends Class & SubtraitStaticAbstract & { _tag: TraitApplierSuperTag }, >( this: This, abstract: (expression: This) => Opaque,