makeSchemableClass
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Julien Valverdé
2024-01-09 17:21:39 +01:00
parent 66e2f5059e
commit e147b61f89
2 changed files with 24 additions and 6 deletions

View File

@@ -60,3 +60,24 @@ export function makeSchemableClassFrom<
}
)
}
export function makeSchemableClass<
SchemaT extends z.ZodRawShape,
SchemaUnknownKeys extends z.UnknownKeysParam,
SchemaCatchall extends z.ZodTypeAny,
SchemaValues extends {},
DefaultValues extends Partial<SchemaValues>,
>(
schema: z.ZodObject<
SchemaT,
SchemaUnknownKeys,
SchemaCatchall,
SchemaValues,
SchemaValues
>,
defaultValues: DefaultValues,
) {
return makeSchemableClassFrom(Object, schema, defaultValues)
}

View File

@@ -1,5 +1,5 @@
import { z } from "zod"
import { extendSchemableClass, makeSchemableClassFrom } from "."
import { extendSchemableClass, makeSchemableClass, makeSchemableClassFrom } from "."
// class Test1 {
@@ -12,10 +12,7 @@ import { extendSchemableClass, makeSchemableClassFrom } from "."
// prout: string = "heugneu"
// }
const Test1 = makeSchemableClassFrom(
class {
randomProperty: string = ""
},
const Test1 = makeSchemableClass(
z.object({ prout: z.string() }),
{},
)
@@ -30,7 +27,7 @@ const Test2 = extendSchemableClass(
)
Test2.defaultValues
new Test2({ prout: "ruquier", ruquier: 69 }).randomProperty
new Test2({ prout: "ruquier", ruquier: 69 })
class Test3 extends Test2 {