diff --git a/src/TraitBuilder.ts b/src/TraitBuilder.ts index abe27ae..219948e 100644 --- a/src/TraitBuilder.ts +++ b/src/TraitBuilder.ts @@ -120,6 +120,14 @@ export namespace TraitBuilder { } +export type ImplStaticThis< + ImplClass extends AbstractClass & { readonly [implSuperSymbol]: true } +> = ( + AbstractClass> & + Omit, typeof implSuperSymbol> +) + + export const trait = new TraitBuilder( new TraitExpression(TraitExpression.NullSuperclass, []), {} as object, diff --git a/src/lib.ts b/src/lib.ts index 6fa058d..5cfa1af 100644 --- a/src/lib.ts +++ b/src/lib.ts @@ -1,4 +1,4 @@ export { Trait, TraitClass, TraitConcreteClass, TraitInstance, TraitStaticMembers, TraitTuple } from "./Trait" -export { TraitBuilder, trait } from "./TraitBuilder" +export { ImplStaticThis, TraitBuilder, trait } from "./TraitBuilder" export { Implements, StaticImplements, TraitExpression, TraitExpressionClass, TraitExpressionConcreteClass, TraitExpressionInstance, TraitExpressionStaticMembers } from "./TraitExpression" export { TraitExpressionBuilder, expression } from "./TraitExpressionBuilder"