From 517792b1c2c08798796df4e7635a4c365a655713 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Sun, 18 Feb 2024 04:10:20 +0100 Subject: [PATCH] Found working approach --- src/TraitBuilder.ts | 6 ++---- src/tests.ts | 24 ++++++++++++++++-------- 2 files changed, 18 insertions(+), 12 deletions(-) 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