This commit is contained in:
@@ -17,19 +17,6 @@ export class ZodSchemaClassBuilder<
|
|||||||
extends TraitExpressionBuilder<Superclass, Traits> {
|
extends TraitExpressionBuilder<Superclass, Traits> {
|
||||||
declare ["constructor"]: typeof ZodSchemaClassBuilder
|
declare ["constructor"]: typeof ZodSchemaClassBuilder
|
||||||
|
|
||||||
extends<
|
|
||||||
Super extends AbstractClass<object>
|
|
||||||
>(
|
|
||||||
// \/ Ensures `extends` can only be called once at the beginning
|
|
||||||
this: ZodSchemaClassBuilder<typeof TraitExpression.NullSuperclass, Traits>,
|
|
||||||
superclass: Super,
|
|
||||||
) {
|
|
||||||
return new this.constructor(
|
|
||||||
superclass,
|
|
||||||
this.expressionTraits,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
schema<
|
schema<
|
||||||
Superclass extends AbstractClass<object, []> & { schema?: never, defaultValues?: never },
|
Superclass extends AbstractClass<object, []> & { schema?: never, defaultValues?: never },
|
||||||
|
|
||||||
@@ -147,6 +134,14 @@ export interface ZodSchemaClassBuilder<
|
|||||||
Superclass extends AbstractClass<object>,
|
Superclass extends AbstractClass<object>,
|
||||||
Traits extends readonly Trait<any, any, any, any>[],
|
Traits extends readonly Trait<any, any, any, any>[],
|
||||||
> {
|
> {
|
||||||
|
extends<
|
||||||
|
Super extends AbstractClass<object>
|
||||||
|
>(
|
||||||
|
// \/ Ensures `extends` can only be called once at the beginning
|
||||||
|
this: ZodSchemaClassBuilder<typeof TraitExpression.NullSuperclass, Traits>,
|
||||||
|
superclass: Super,
|
||||||
|
): InstanceType<typeof this.constructor<Super, Traits>>
|
||||||
|
|
||||||
expresses<
|
expresses<
|
||||||
const T extends readonly Trait<
|
const T extends readonly Trait<
|
||||||
TraitExpression<
|
TraitExpression<
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import { AbstractClass, Class } from "type-fest"
|
|||||||
|
|
||||||
|
|
||||||
const exp = new ZodSchemaClassBuilder(TraitExpression.NullSuperclass, [])
|
const exp = new ZodSchemaClassBuilder(TraitExpression.NullSuperclass, [])
|
||||||
|
.extends(class {})
|
||||||
.schema({
|
.schema({
|
||||||
schema: z.object({
|
schema: z.object({
|
||||||
/** User ID */
|
/** User ID */
|
||||||
|
|||||||
Reference in New Issue
Block a user