TraitBuilder work
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Julien Valverdé
2024-02-18 22:06:33 +01:00
parent 20554ec55a
commit 40eaa80eb6
2 changed files with 18 additions and 11 deletions

View File

@@ -5,18 +5,25 @@ import { ExtendPlain, StaticMembers } from "./util"
type ImplSuper<
Supertraits extends Trait<any, any, any, any>[],
SuperExpression extends TraitExpression<
typeof TraitExpression.NullSuperclass,
Trait<any, any, any, any>[]
>,
Abstract extends object,
StaticAbstract extends object,
> = (
AbstractClass<
ExtendPlain<[
...Traits.MapImplInstance<Supertraits>,
...Traits.MapImplInstance<
TraitExpression.Traits<SuperExpression>
>,
Abstract,
]>
> &
ExtendPlain<[
...Traits.MapImplStaticMembers<Supertraits>,
...Traits.MapImplStaticMembers<
TraitExpression.Traits<SuperExpression>
>,
StaticAbstract,
]> &
{ readonly _tag: "@thilawyn/traitify-ts/Super" } // TODO: replace with unique symbol?
@@ -63,17 +70,13 @@ export class TraitBuilder<
implement<
ImplClassWithAbstract extends ImplSuper< // TODO: use This instead?
TraitExpression.Traits<SuperExpression>,
SuperExpression,
Abstract,
StaticAbstract
>
>(
apply: (
Super: ImplSuper<
TraitExpression.Traits<SuperExpression>,
Abstract,
StaticAbstract
>
Super: ImplSuper<SuperExpression, Abstract, StaticAbstract>
) => ImplClassWithAbstract
) {
return new TraitBuilder(