diff --git a/src/TraitBuilder.ts b/src/TraitBuilder.ts index f0719d4..94f7a53 100644 --- a/src/TraitBuilder.ts +++ b/src/TraitBuilder.ts @@ -1,7 +1,8 @@ +import { Pipe, Tuples } from "hotscript" import { AbstractClass, Class } from "type-fest" import { Trait } from "./Trait" -import { Implements, ImplementsStatic, TraitExpression } from "./TraitExpression" -import { StaticMembers } from "./util" +import { TraitExpression } from "./TraitExpression" +import { ExtendFn, SimplifyFn, StaticMembers } from "./util" export type TraitApplierSuperTag = "@thilawyn/traitify-ts/Super" @@ -49,7 +50,17 @@ export class TraitBuilder< } extendAbstract( - _: (Super: AbstractClass & Abstract>) => AbstractClass + _: ( + Super: AbstractClass< + Pipe, + Tuples.Append, + ExtendFn, + SimplifyFn, + ]> + > + ) => AbstractClass ) { return new TraitBuilder( this.traitSuperExpression, @@ -69,7 +80,15 @@ export class TraitBuilder< } extendStaticAbstract( - _: (Super: AbstractClass & StaticAbstract>) => AbstractClass + _: (Super: AbstractClass< + Pipe, + Tuples.Append, + ExtendFn, + SimplifyFn, + ]> + >) => AbstractClass ) { return new TraitBuilder( this.traitSuperExpression, diff --git a/src/TraitExpression.ts b/src/TraitExpression.ts index 9b65e06..96efaab 100644 --- a/src/TraitExpression.ts +++ b/src/TraitExpression.ts @@ -5,13 +5,6 @@ import { TraitBuilder } from "./TraitBuilder" import { ExtendFn, SimplifyFn, StaticMembersFn } from "./util" -// type RemoveSupertraitsAbstractFromAbstract = { -// [Key in Extract]: Left[Key] -// } & { -// [Key in Exclude]: Left[Key] -// } - - export class TraitExpression< Superclass extends AbstractClass, const Traits extends Trait[], diff --git a/src/tests.ts b/src/tests.ts index 625eede..1863fce 100644 --- a/src/tests.ts +++ b/src/tests.ts @@ -62,7 +62,7 @@ type ActiveStatefulSubscriptionClass = Trait.Class