diff --git a/src/extendSchemable.ts b/src/extendSchemable.ts index eee5111..6c68b2e 100644 --- a/src/extendSchemable.ts +++ b/src/extendSchemable.ts @@ -1,4 +1,4 @@ -import { AbstractClass } from "type-fest" +import { AbstractClass, Class } from "type-fest" import { z } from "zod" import { SchemableClass } from "." import { StaticMembers } from "./util" @@ -43,6 +43,12 @@ export function extendSchemable< defaultValuesApplier: (defaultValues: ExtendDefaultValues) => DefaultValues, ) { + type ClassKind = ( + C extends Class + ? Class + : AbstractClass + ) + const schema = schemaApplier(extend.schema) const defaultValues = defaultValuesApplier(extend.defaultValues) @@ -53,7 +59,7 @@ export function extendSchemable< static readonly defaultValues = defaultValues readonly defaultValues = defaultValues } as unknown as ( - AbstractClass< + ClassKind< Omit & { readonly schema: typeof schema, diff --git a/src/tests.ts b/src/tests.ts index f17f90b..3e1b408 100644 --- a/src/tests.ts +++ b/src/tests.ts @@ -16,7 +16,7 @@ class Test1 { const Test2 = extendSchemable( Test1, schema => schema.extend({ prout: z.literal("ruquier"), ruquier: z.number() }), - defaultValues => ({ prout: "ruquier" as const }), + () => ({ prout: "ruquier" as const }), ) Test2.defaultValues