This commit is contained in:
16
src/tests.ts
16
src/tests.ts
@@ -1,8 +1,9 @@
|
|||||||
|
import { AbstractClass } from "type-fest"
|
||||||
import { Trait, TraitClass } from "./Trait"
|
import { Trait, TraitClass } from "./Trait"
|
||||||
import { trait } from "./TraitBuilder"
|
import { trait } from "./TraitBuilder"
|
||||||
import { Implements, ImplementsStatic, TraitExpression } from "./TraitExpression"
|
import { Implements, ImplementsStatic, TraitExpression } from "./TraitExpression"
|
||||||
import { expression } from "./TraitExpressionBuilder"
|
import { expression } from "./TraitExpressionBuilder"
|
||||||
import { ExtendPlain } from "./util"
|
import { ExtendPlain, StaticMembers } from "./util"
|
||||||
|
|
||||||
|
|
||||||
const PrintsHelloOnNew = trait
|
const PrintsHelloOnNew = trait
|
||||||
@@ -85,14 +86,17 @@ console.log(new User())
|
|||||||
|
|
||||||
type ExpectsObjectArray<T extends readonly object[]> = T
|
type ExpectsObjectArray<T extends readonly object[]> = T
|
||||||
|
|
||||||
type Maps<T extends readonly any[]> = {
|
type MapStaticMembers<T extends readonly any[]> = {
|
||||||
[K in keyof T]: T[K]
|
[K in keyof T]: StaticMembers<T[K]>
|
||||||
}
|
}
|
||||||
|
|
||||||
type MapTraits<Exp extends TraitExpression<any, any>> = (
|
type MapClasses<Classes extends AbstractClass<any>[]> = (
|
||||||
ExpectsObjectArray<
|
ExpectsObjectArray<
|
||||||
Maps<
|
MapStaticMembers<
|
||||||
|
Classes
|
||||||
>
|
>
|
||||||
>
|
>
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
type Output = MapClasses<[typeof User]>
|
||||||
|
|||||||
Reference in New Issue
Block a user