diff --git a/src/ZodSchemaClass.ts b/src/ZodSchemaClass.ts index b53c7a7..1bc86c4 100644 --- a/src/ZodSchemaClass.ts +++ b/src/ZodSchemaClass.ts @@ -17,19 +17,6 @@ export class ZodSchemaClassBuilder< extends TraitExpressionBuilder { declare ["constructor"]: typeof ZodSchemaClassBuilder - extends< - Super extends AbstractClass - >( - // \/ Ensures `extends` can only be called once at the beginning - this: ZodSchemaClassBuilder, - superclass: Super, - ) { - return new this.constructor( - superclass, - this.expressionTraits, - ) - } - schema< Superclass extends AbstractClass & { schema?: never, defaultValues?: never }, @@ -147,6 +134,14 @@ export interface ZodSchemaClassBuilder< Superclass extends AbstractClass, Traits extends readonly Trait[], > { + extends< + Super extends AbstractClass + >( + // \/ Ensures `extends` can only be called once at the beginning + this: ZodSchemaClassBuilder, + superclass: Super, + ): InstanceType> + expresses< const T extends readonly Trait< TraitExpression< diff --git a/src/tests.ts b/src/tests.ts index 9471198..ac09859 100644 --- a/src/tests.ts +++ b/src/tests.ts @@ -7,6 +7,7 @@ import { AbstractClass, Class } from "type-fest" const exp = new ZodSchemaClassBuilder(TraitExpression.NullSuperclass, []) + .extends(class {}) .schema({ schema: z.object({ /** User ID */