From 9e18a4a0ee3a83e925bb486014a05f284194a42e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Sat, 24 Feb 2024 03:03:43 +0100 Subject: [PATCH] Generic tests --- src/tests.ts | 29 ++++++++++++++++++++++-- src/traits/JsonifiableZodSchemaObject.ts | 2 +- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/src/tests.ts b/src/tests.ts index c2860d7..1d32cae 100644 --- a/src/tests.ts +++ b/src/tests.ts @@ -3,6 +3,7 @@ import { z } from "zod" import { ZodSchemaClassBuilder } from "./ZodSchemaClass" import { dejsonify, jsonify } from "./schema/jsonify" import { ObservableZodSchemaObject } from "./traits/ObservableZodSchemaObject" +import { AbstractClass, Class } from "type-fest" const exp = new ZodSchemaClassBuilder(TraitExpression.NullSuperclass, []) @@ -34,7 +35,7 @@ class User extends exp.extends implements Implements {} User.defaultValues const inst = User.create({ id: 1n, name: "" }) -console.log(inst) +// console.log(inst) const jsonifiedUser = await inst.jsonifyPromise() @@ -47,4 +48,28 @@ class SubTest extends User.extend({ }) {} const subInst = await SubTest.createPromise({ name: "", prout: "" }) -console.log(subInst) +// console.log(subInst) + + +class BaseClass { + declare ["constructor"]: typeof BaseClass + + static readonly issou = "gneugneu" + + otherMethod() { + return "prout" as const + } + + method( + this: Omit & { ["constructor"]: Class } + ) { + this.otherMethod() + return new this.constructor() + } +} + +class Superclass extends BaseClass { + declare ["constructor"]: typeof Superclass +} + +console.log(new Superclass().method()) diff --git a/src/traits/JsonifiableZodSchemaObject.ts b/src/traits/JsonifiableZodSchemaObject.ts index ab0f02e..2ed27fe 100644 --- a/src/traits/JsonifiableZodSchemaObject.ts +++ b/src/traits/JsonifiableZodSchemaObject.ts @@ -64,7 +64,7 @@ export const JsonifiableZodSchemaObject = trait params?: Partial, ) { - return this.dejsonifySchema.parseAsync(this, params) + return this.jsonifySchema.parseAsync(this, params) } jsonifyEffect<