This commit is contained in:
@@ -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]>
|
||||
}
|
||||
|
||||
|
||||
|
||||
24
src/tests.ts
24
src/tests.ts
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user