Expresses work
This commit is contained in:
@@ -1,14 +1,20 @@
|
||||
import { Trait, TraitClass } from ".."
|
||||
import { Trait, TraitAbstractMembers, TraitClass } from ".."
|
||||
|
||||
|
||||
/**
|
||||
* Represents an array of classes corresponding to the provided traits.
|
||||
* @template Traits - An array of traits extending Trait<any>.
|
||||
*/
|
||||
export type TraitsClasses<Traits extends readonly Trait<any>[]> = (
|
||||
export type TraitsAbstractMembers<Traits extends readonly Trait<any, any>[]> = (
|
||||
Traits extends [infer T, ...infer Rest]
|
||||
? T extends Trait<any>
|
||||
? Rest extends Trait<any>[]
|
||||
? T extends Trait<any, any>
|
||||
? Rest extends Trait<any, any>[]
|
||||
? [TraitAbstractMembers<T>, ...TraitsClasses<Rest>]
|
||||
: never
|
||||
: never
|
||||
: []
|
||||
)
|
||||
|
||||
export type TraitsClasses<Traits extends readonly Trait<any, any>[]> = (
|
||||
Traits extends [infer T, ...infer Rest]
|
||||
? T extends Trait<any, any>
|
||||
? Rest extends Trait<any, any>[]
|
||||
? [TraitClass<T>, ...TraitsClasses<Rest>]
|
||||
: never
|
||||
: never
|
||||
|
||||
Reference in New Issue
Block a user