TraitBuilder work
Some checks failed
continuous-integration/drone/push Build is failing

This commit is contained in:
Julien Valverdé
2024-02-17 21:23:08 +01:00
parent 04146f6c69
commit c1f48b9bb2
3 changed files with 19 additions and 63 deletions

View File

@@ -74,50 +74,24 @@ export class TraitBuilder<
private readonly traitApply: (Super: AbstractClass<object>) => ImplClass,
) {}
abstract<A extends ExtendAbstractSuper<SuperExpression, Abstract>>() {
abstract<A extends Abstract>(
_: (Super: AbstractClass<Abstract>) => AbstractClass<A, []>
) {
return new TraitBuilder(
this.traitSuperExpression,
{} as A,
{} as Simplify<A>,
this.traitStaticAbstract,
this.traitApply,
)
}
extendAbstract<A extends ExtendAbstractSuper<SuperExpression, Abstract>>(
_: (
Super: AbstractClass<
ExtendAbstractSuper<SuperExpression, Abstract>
>
) => AbstractClass<A, []>
) {
return new TraitBuilder(
this.traitSuperExpression,
{} as A,
this.traitStaticAbstract,
this.traitApply,
)
}
staticAbstract<A extends ExtendStaticAbstractSuper<SuperExpression, StaticAbstract>>() {
return new TraitBuilder(
this.traitSuperExpression,
this.traitAbstract,
{} as A,
this.traitApply,
)
}
extendStaticAbstract<A extends ExtendStaticAbstractSuper<SuperExpression, StaticAbstract>>(
_: (
Super: AbstractClass<
ExtendStaticAbstractSuper<SuperExpression, StaticAbstract>
>
) => AbstractClass<A, []>
staticAbstract<A extends StaticAbstract>(
_: (Super: AbstractClass<StaticAbstract>) => AbstractClass<A, []>
) {
return new TraitBuilder(
this.traitSuperExpression,
this.traitAbstract,
{} as A,
{} as Simplify<A>,
this.traitApply,
)
}