diff --git a/src/extendSchemableClass.ts b/src/extendSchemableClass.ts index 2d06f72..5d30d2b 100644 --- a/src/extendSchemableClass.ts +++ b/src/extendSchemableClass.ts @@ -1,4 +1,4 @@ -import { AbstractClass, Class } from "type-fest" +import { AbstractClass, Class as ConcreteClass } from "type-fest" import { z } from "zod" import { SchemableClass } from "." import { StaticMembers } from "./util" @@ -23,6 +23,7 @@ export function extendSchemableClass< SchemaUnknownKeys extends z.UnknownKeysParam, SchemaCatchall extends z.ZodTypeAny, SchemaValues extends ExtendSchemaValues, + DefaultValues extends Partial, >( extend: C | SchemableClass< @@ -43,9 +44,9 @@ export function extendSchemableClass< defaultValuesApplier: (defaultValues: ExtendDefaultValues) => DefaultValues, ) { - type ClassKind = ( - C extends Class - ? Class + type Class = ( + C extends ConcreteClass + ? ConcreteClass : AbstractClass ) @@ -59,7 +60,7 @@ export function extendSchemableClass< static readonly defaultValues = defaultValues readonly defaultValues = defaultValues } as unknown as ( - ClassKind< + Class< Omit, "schema" | "defaultValues" | keyof ExtendSchemaValues> & { readonly schema: typeof schema,