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

This commit is contained in:
Julien Valverdé
2024-02-19 22:08:24 +01:00
parent eee35e7d59
commit df7e7f3401
5 changed files with 59 additions and 71 deletions

View File

@@ -1,5 +1,5 @@
import { AbstractClass, Class, Simplify } from "type-fest"
import { Trait, TraitInstance, TraitStaticMembers, TraitTuple } from "./Trait"
import { Trait, TraitTuple } from "./Trait"
import { TraitBuilder } from "./TraitBuilder"
import { Extend, StaticMembers } from "./util"
@@ -143,17 +143,10 @@ export type TraitExpressionInstance<
Simplify<
Extend<[
InstanceType<TraitExpression.Superclass<Exp>>,
...MapTraitsInstance<TraitExpression.Traits<Exp>>,
...TraitTuple.MapInstance<TraitExpression.Traits<Exp>>,
]>
>
)
type MapTraitsInstance<T> = {
[K in keyof T]: K extends keyof []
? T[K]
: T[K] extends Trait<any, any, any, any>
? TraitInstance<T[K]>
: never
}
export type TraitExpressionStaticMembers<
Exp extends TraitExpression<any, Trait<any, any, any, any>[]>
@@ -161,14 +154,7 @@ export type TraitExpressionStaticMembers<
Simplify<
Extend<[
StaticMembers<TraitExpression.Superclass<Exp>>,
...MapTraitsStaticMembers<TraitExpression.Traits<Exp>>,
...TraitTuple.MapStaticMembers<TraitExpression.Traits<Exp>>,
]>
>
)
type MapTraitsStaticMembers<T> = {
[K in keyof T]: K extends keyof []
? T[K]
: T[K] extends Trait<any, any, any, any>
? TraitStaticMembers<T[K]>
: never
}