0.1.16 #16

Merged
Thilawyn merged 3 commits from next into master 2024-03-23 00:51:27 +01:00
2 changed files with 36 additions and 2 deletions
Showing only changes of commit 049336fb57 - Show all commits

View File

@@ -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, []),

View File

@@ -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"