Expresses work
This commit is contained in:
27
src/trait.ts
27
src/trait.ts
@@ -42,8 +42,32 @@ export type Trait<
|
||||
}, TraitTag>
|
||||
)
|
||||
|
||||
export type TraitAbstractMembers<T> = (
|
||||
T extends Trait<infer AbstractMembers, any>
|
||||
? AbstractMembers
|
||||
: never
|
||||
)
|
||||
|
||||
export type TraitApplierSuperTag = "@thilawyn/traitify-ts/Super"
|
||||
export type TraitImpl<T> = (
|
||||
T extends Trait<any, infer Impl>
|
||||
? Impl
|
||||
: never
|
||||
)
|
||||
|
||||
export type TraitClass<T> = (
|
||||
T extends Trait<infer AbstractMembers, infer Impl>
|
||||
? AddAbstractMembersToImpl<Impl, AbstractMembers>
|
||||
: never
|
||||
)
|
||||
|
||||
export type TraitInstance<T> = (
|
||||
T extends Trait<infer AbstractMembers, infer Impl>
|
||||
? InstanceType<Impl> & AbstractMembers
|
||||
: never
|
||||
)
|
||||
|
||||
|
||||
export type TraitApplierSuperTag = "@thilawyn/traitify-ts/TraitApplierSuper"
|
||||
|
||||
export type TraitApplier<
|
||||
AbstractMembers extends object,
|
||||
@@ -54,7 +78,6 @@ export type TraitApplier<
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
export function trait<
|
||||
AbstractMembers extends object = {}
|
||||
>(): (
|
||||
|
||||
Reference in New Issue
Block a user