0.1.4 #4

Merged
Thilawyn merged 68 commits from next into master 2024-02-20 01:39:38 +01:00
2 changed files with 18 additions and 12 deletions
Showing only changes of commit 517792b1c2 - Show all commits

View File

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

View File

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