From 6e1a202ade58ef5dd713c8ad5904cc78a71de8fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Wed, 28 Feb 2024 01:22:35 +0100 Subject: [PATCH] ImplStaticThis helper --- src/TraitBuilder.ts | 8 ++++++++ src/lib.ts | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) 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"