Found working approach
Some checks failed
continuous-integration/drone/push Build is failing

This commit is contained in:
Julien Valverdé
2024-02-18 04:10:20 +01:00
parent 45ec2dd0e3
commit 517792b1c2
2 changed files with 18 additions and 12 deletions

View File

@@ -68,10 +68,8 @@ type MapTraitsToOwnImplInstance<T extends readonly any[]> = {
type MapTraitsToOwnImplStaticMembers<T extends readonly any[]> = {
[K in keyof T]: Trait.OwnImplClass<T[K]>
}
type MapStaticMembers<Tuple extends readonly AbstractClass<any>[]> = {
[TupleK in keyof Tuple]: {
[ClassK in keyof Tuple[TupleK]]: Tuple[TupleK][ClassK]
}
type MapStaticMembers<T extends readonly AbstractClass<any>[]> = {
[K in keyof T]: StaticMembers<T[K]>
}

View File

@@ -84,19 +84,27 @@ class User extends exp.extends implements Implements<typeof exp> {
console.log(new User())
type ExpectsObjectArray<T extends readonly object[]> = T
type ExpectObjectArray<T extends readonly object[]> = T
type MapOwnImplClass<T extends readonly any[]> = {
[K in keyof T]: Trait.OwnImplClass<T[K]>
}
type MapStaticMembers<T extends readonly any[]> = {
[K in keyof T]: StaticMembers<T[K]>
}
type MapClasses<Classes extends AbstractClass<any>[]> = (
ExpectsObjectArray<
MapStaticMembers<
Classes
type MapClasses<Exp> = (
Exp extends TraitExpression<any, infer Traits>
? ExpectObjectArray<
MapStaticMembers<
MapOwnImplClass<
Traits
>
>
>
>
: never
)
type Output = MapClasses<[typeof User]>
type Output = MapClasses<typeof exp>