diff --git a/src/TraitBuilder.ts b/src/TraitBuilder.ts index 30ad5f2..b92658d 100644 --- a/src/TraitBuilder.ts +++ b/src/TraitBuilder.ts @@ -68,10 +68,8 @@ type MapTraitsToOwnImplInstance = { type MapTraitsToOwnImplStaticMembers = { [K in keyof T]: Trait.OwnImplClass } -type MapStaticMembers[]> = { - [TupleK in keyof Tuple]: { - [ClassK in keyof Tuple[TupleK]]: Tuple[TupleK][ClassK] - } +type MapStaticMembers[]> = { + [K in keyof T]: StaticMembers } diff --git a/src/tests.ts b/src/tests.ts index 7d26ae9..8c2207d 100644 --- a/src/tests.ts +++ b/src/tests.ts @@ -84,19 +84,27 @@ class User extends exp.extends implements Implements { console.log(new User()) -type ExpectsObjectArray = T +type ExpectObjectArray = T + +type MapOwnImplClass = { + [K in keyof T]: Trait.OwnImplClass +} type MapStaticMembers = { [K in keyof T]: StaticMembers } -type MapClasses[]> = ( - ExpectsObjectArray< - MapStaticMembers< - Classes + +type MapClasses = ( + Exp extends TraitExpression + ? ExpectObjectArray< + MapStaticMembers< + MapOwnImplClass< + Traits + > + > > - > + : never ) - -type Output = MapClasses<[typeof User]> +type Output = MapClasses