This commit is contained in:
40
src/Trait.ts
40
src/Trait.ts
@@ -39,42 +39,52 @@ export class Trait<
|
|||||||
) {}
|
) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface TraitOwnAbstractFn extends Fn {
|
export type TraitOwnAbstract<T> = (
|
||||||
return: this["arg0"] extends Trait<any, infer Abstract, any>
|
T extends Trait<any, infer Abstract, any>
|
||||||
? Abstract
|
? Abstract
|
||||||
: never
|
: never
|
||||||
|
)
|
||||||
|
export interface TraitOwnAbstractFn extends Fn {
|
||||||
|
return: TraitOwnAbstract<this["arg0"]>
|
||||||
}
|
}
|
||||||
export type TraitOwnAbstract<T> = Call<TraitOwnAbstractFn, T>
|
|
||||||
|
|
||||||
export interface TraitOwnImplClassFn extends Fn {
|
export type TraitOwnImplClass<T> = (
|
||||||
return: this["arg0"] extends Trait<any, any, infer ImplClass>
|
T extends Trait<any, any, infer ImplClass>
|
||||||
? ImplClass
|
? ImplClass
|
||||||
: never
|
: never
|
||||||
|
)
|
||||||
|
export interface TraitOwnImplClassFn extends Fn {
|
||||||
|
return: TraitOwnImplClass<this["arg0"]>
|
||||||
}
|
}
|
||||||
export type TraitOwnImplClass<T> = Call<TraitOwnImplClassFn, T>
|
|
||||||
|
|
||||||
export interface TraitOwnImplInstanceFn extends Fn {
|
export type TraitOwnImplInstance<T> = (
|
||||||
return: this["arg0"] extends Trait<any, any, infer ImplClass>
|
T extends Trait<any, any, infer ImplClass>
|
||||||
? InstanceType<ImplClass>
|
? InstanceType<ImplClass>
|
||||||
: never
|
: never
|
||||||
|
)
|
||||||
|
export interface TraitOwnImplInstanceFn extends Fn {
|
||||||
|
return: TraitOwnImplInstance<this["arg0"]>
|
||||||
}
|
}
|
||||||
export type TraitOwnImplInstance<T> = Call<TraitOwnImplInstanceFn, T>
|
|
||||||
|
|
||||||
export interface TraitOwnClassFn extends Fn {
|
export type TraitOwnClass<T> = (
|
||||||
return: this["arg0"] extends Trait<any, infer Abstract, infer ImplClass>
|
T extends Trait<any, infer Abstract, infer ImplClass>
|
||||||
? AddAbstractToImplClass<ImplClass, Abstract>
|
? AddAbstractToImplClass<ImplClass, Abstract>
|
||||||
: never
|
: never
|
||||||
|
)
|
||||||
|
export interface TraitOwnClassFn extends Fn {
|
||||||
|
return: TraitOwnClass<this["arg0"]>
|
||||||
}
|
}
|
||||||
export type TraitOwnClass<T> = Call<TraitOwnClassFn, T>
|
|
||||||
|
|
||||||
export interface TraitOwnInstanceFn extends Fn {
|
export type TraitOwnInstance<T> = (
|
||||||
return: this["arg0"] extends Trait<any, infer Abstract, infer ImplClass>
|
T extends Trait<any, infer Abstract, infer ImplClass>
|
||||||
? InstanceType<
|
? InstanceType<
|
||||||
AddAbstractToImplClass<ImplClass, Abstract>
|
AddAbstractToImplClass<ImplClass, Abstract>
|
||||||
>
|
>
|
||||||
: never
|
: never
|
||||||
|
)
|
||||||
|
export interface TraitOwnInstanceFn extends Fn {
|
||||||
|
return: TraitOwnInstance<this["arg0"]>
|
||||||
}
|
}
|
||||||
export type TraitOwnInstance<T> = Call<TraitOwnInstanceFn, T>
|
|
||||||
|
|
||||||
|
|
||||||
export interface TraitSupertraitsFn extends Fn {
|
export interface TraitSupertraitsFn extends Fn {
|
||||||
|
|||||||
Reference in New Issue
Block a user