0.1.11 #11

Merged
Thilawyn merged 7 commits from next into master 2024-02-24 23:42:25 +01:00
Showing only changes of commit dc41001651 - Show all commits

View File

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