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 } from "./TraitBuilder"
|
||||
import { Implements, ImplementsStatic, TraitExpression } from "./TraitExpression"
|
||||
import { expression } from "./TraitExpressionBuilder"
|
||||
import { ExtendPlain } from "./util"
|
||||
import { ExtendPlain, StaticMembers } from "./util"
|
||||
|
||||
|
||||
const PrintsHelloOnNew = trait
|
||||
@@ -85,14 +86,17 @@ console.log(new User())
|
||||
|
||||
type ExpectsObjectArray<T extends readonly object[]> = T
|
||||
|
||||
type Maps<T extends readonly any[]> = {
|
||||
[K in keyof T]: T[K]
|
||||
type MapStaticMembers<T extends readonly any[]> = {
|
||||
[K in keyof T]: StaticMembers<T[K]>
|
||||
}
|
||||
|
||||
type MapTraits<Exp extends TraitExpression<any, any>> = (
|
||||
type MapClasses<Classes extends AbstractClass<any>[]> = (
|
||||
ExpectsObjectArray<
|
||||
Maps<
|
||||
|
||||
MapStaticMembers<
|
||||
Classes
|
||||
>
|
||||
>
|
||||
)
|
||||
|
||||
|
||||
type Output = MapClasses<[typeof User]>
|
||||
|
||||
Reference in New Issue
Block a user