TraitExpressionBuilder refactoring
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Julien Valverdé
2024-02-24 22:28:37 +01:00
parent f8a3c7dede
commit dc41001651

View File

@@ -76,7 +76,10 @@ export class TraitExpressionBuilder<
>[]
>(
...traits: T
) {
): TraitExpressionBuilder<
Superclass,
TraitExpressionBuilder.ExpressesReturnTypeTraits<Traits, T>
> {
return new this.constructor(
this.expressionSuperclass,
@@ -99,7 +102,10 @@ export class TraitExpressionBuilder<
>[]
>(
...traits: T
) {
): TraitExpressionBuilder<
Superclass,
TraitExpressionBuilder.ExpressesFirstReturnTypeTraits<Traits, T>
> {
return new this.constructor(
this.expressionSuperclass,
@@ -166,6 +172,26 @@ export namespace TraitExpressionBuilder {
: false
)
export type ExpressesReturnTypeTraits<
Traits extends readonly Trait<any, any, any, any>[],
T extends readonly Trait<any, any, any, any>[],
> = (
TraitExpressionBuilder.TraitsUniq<[
...Traits,
...TraitExpressionBuilder.SpreadSupertraits<T>,
]>
)
export type ExpressesFirstReturnTypeTraits<
Traits extends readonly Trait<any, any, any, any>[],
T extends readonly Trait<any, any, any, any>[],
> = (
TraitExpressionBuilder.TraitsUniq<[
...TraitExpressionBuilder.SpreadSupertraits<T>,
...Traits,
]>
)
export type BuildTraitExpression<
Superclass extends AbstractClass<object>,
Traits extends Trait<any, any, any, any>[],