This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import { AbstractClass, Simplify } from "type-fest"
|
||||
import { AbstractClass, Class, Simplify } from "type-fest"
|
||||
import { Trait } from "./Trait"
|
||||
import { TraitExpression } from "./TraitExpression"
|
||||
import { Extend, StaticMembers } from "./util"
|
||||
@@ -128,6 +128,40 @@ export type ImplStatic<
|
||||
>
|
||||
)
|
||||
|
||||
export function implStaticThis<
|
||||
ImplClass extends AbstractClass<object> & { readonly [implSuperSymbol]: true },
|
||||
This extends AbstractClass<object>,
|
||||
>(
|
||||
_Impl: ImplClass,
|
||||
thisArg: This,
|
||||
) {
|
||||
return thisArg as unknown as (
|
||||
AbstractClass<
|
||||
InstanceType<ImplClass> & InstanceType<This>,
|
||||
ConstructorParameters<This>
|
||||
> &
|
||||
ImplStatic<ImplClass> &
|
||||
StaticMembers<This>
|
||||
)
|
||||
}
|
||||
|
||||
export function implStaticInstantiableThis<
|
||||
ImplClass extends AbstractClass<object> & { readonly [implSuperSymbol]: true },
|
||||
This extends Class<object>,
|
||||
>(
|
||||
_Impl: ImplClass,
|
||||
thisArg: This,
|
||||
) {
|
||||
return thisArg as unknown as (
|
||||
Class<
|
||||
InstanceType<ImplClass> & InstanceType<This>,
|
||||
ConstructorParameters<This>
|
||||
> &
|
||||
ImplStatic<ImplClass> &
|
||||
StaticMembers<This>
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
export const trait = new TraitBuilder(
|
||||
new TraitExpression(TraitExpression.NullSuperclass, []),
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
export { Trait, TraitClass, TraitConcreteClass, TraitInstance, TraitStaticMembers, TraitTuple } from "./Trait"
|
||||
export { ImplStatic, TraitBuilder, trait } from "./TraitBuilder"
|
||||
export { ImplStatic, TraitBuilder, implStaticInstantiableThis, implStaticThis, trait } from "./TraitBuilder"
|
||||
export { Implements, StaticImplements, TraitExpression, TraitExpressionClass, TraitExpressionConcreteClass, TraitExpressionInstance, TraitExpressionStaticMembers } from "./TraitExpression"
|
||||
export { TraitExpressionBuilder, expression } from "./TraitExpressionBuilder"
|
||||
|
||||
Reference in New Issue
Block a user