Work
This commit is contained in:
21
src/trait.ts
21
src/trait.ts
@@ -1,3 +1,4 @@
|
||||
import { Fn } from "hotscript"
|
||||
import { AbstractClass, Class, Opaque } from "type-fest"
|
||||
import { StaticMembers } from "./util"
|
||||
|
||||
@@ -56,6 +57,10 @@ export type TraitAbstractMembers<T> = (
|
||||
: never
|
||||
)
|
||||
|
||||
export interface GetTraitAbstractMembers extends Fn {
|
||||
return: TraitAbstractMembers<this["arg0"]>
|
||||
}
|
||||
|
||||
export type TraitImplClass<T> = (
|
||||
T extends Trait<infer AbstractMembers, infer ImplWithAbstractMembers>
|
||||
? RemoveAbstractMembersFromImpl<
|
||||
@@ -65,6 +70,10 @@ export type TraitImplClass<T> = (
|
||||
: never
|
||||
)
|
||||
|
||||
export interface GetTraitImplClass extends Fn {
|
||||
return: TraitImplClass<this["arg0"]>
|
||||
}
|
||||
|
||||
export type TraitImplInstance<T> = (
|
||||
T extends Trait<infer AbstractMembers, infer ImplWithAbstractMembers>
|
||||
? RemoveAbstractMembersFromImplInstance<
|
||||
@@ -74,18 +83,30 @@ export type TraitImplInstance<T> = (
|
||||
: never
|
||||
)
|
||||
|
||||
export interface GetTraitImplInstance extends Fn {
|
||||
return: TraitImplInstance<this["arg0"]>
|
||||
}
|
||||
|
||||
export type TraitClass<T> = (
|
||||
T extends Trait<any, infer ImplWithAbstractMembers>
|
||||
? ImplWithAbstractMembers
|
||||
: never
|
||||
)
|
||||
|
||||
export interface GetTraitClass extends Fn {
|
||||
return: TraitClass<this["arg0"]>
|
||||
}
|
||||
|
||||
export type TraitInstance<T> = (
|
||||
T extends Trait<any, infer ImplWithAbstractMembers>
|
||||
? InstanceType<ImplWithAbstractMembers>
|
||||
: never
|
||||
)
|
||||
|
||||
export interface GetTraitInstance extends Fn {
|
||||
return: TraitInstance<this["arg0"]>
|
||||
}
|
||||
|
||||
|
||||
export type TraitApplierSuperTag = "@thilawyn/traitify-ts/TraitApplierSuper"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user