zod-to-json-schema icon indicating copy to clipboard operation
zod-to-json-schema copied to clipboard

Type definition misconfigured

Open wataruoguchi opened this issue 1 year ago • 1 comments

First of all, thank you for creating the module!

I started using your zod-to-json-schema and json-schema-to-zod. While the code looks to be working, my VSCode displays errors.

"json-schema-to-zod": "^2.0.14",
"typescript": "^5.3.3",
"zod": "^3.22.4",
"zod-to-json-schema": "^3.22.4"
import { jsonSchemaToZod } from "json-schema-to-zod";
import { z } from "zod";
import { zodToJsonSchema } from "zod-to-json-schema";

const testSchema = z.object({
  name: z.string(),
  age: z.number().optional(),
});
const jsonSchema = zodToJsonSchema(testSchema);
const zodSchema = jsonSchemaToZod(jsonSchema);  // <-- 1st type error with "jsonSchema"
console.log({
  jsonSchema,
  zodSchema,
  properties: jsonSchema.properties,  // <-- 2nd type error with "properties"
});
Screenshot 2024-02-22 at 8 07 56 PM

The result of the console.log is below: Screenshot 2024-02-22 at 8 08 28 PM

The variable jsonSchema has properties that JsonSchemaObject type expects in json-schema-to-zod.

wataruoguchi avatar Feb 23 '24 04:02 wataruoguchi

Hi, thanks for opening an issue.

The first problem is valid. jsonSchemaToZod should accept the output types of zodToJsonSchema. I will look into this... at some point. ;)

The second problem (the "missing" properties) is not a bug. The output will not have inference, like the Zod schema does (meaning the return type just says that it's a JSON Schema, not what the schema contains). Since not all JSON Schemas have "properties" you have to check for it manually.

StefanTerdell avatar Feb 23 '24 07:02 StefanTerdell