Giter VIP home page Giter VIP logo

Comments (3)

StefanTerdell avatar StefanTerdell commented on May 13, 2024 3

oneOf

oneOf is essentially useless and a pitfall for bad practices of schema building. I can't think of a single case where you wouldn't want to use a discriminated union instead. Not saying there aren't any, but... yaknow. If anyone comes across this in the future, consider the following:

Zod

const unionSchema = z.union([z.string(), z.string()])

With the above Zod schema, any string will pass validation.

Current output

{
  "anyOf": [
    {
      "type": "string"
    },
    {
      "type": "string"
    }
  ]
}

With the above JSON schema, any string will pass validation, just like the source Zod schema.

Output with proposed change in issue

{
  "oneOf": [
    {
      "type": "string"
    },
    {
      "type": "string"
    }
  ]
}

With the above JSON schema, no value will ever pass validation. The schema is "broken". 😿

from zod-to-json-schema.

StefanTerdell avatar StefanTerdell commented on May 13, 2024

Why? Please provide a problem case

from zod-to-json-schema.

MunifTanjim avatar MunifTanjim commented on May 13, 2024

Sorry about the noise. I misunderstood the problem I was having.

I was using https://github.com/drwpow/openapi-typescript and it converts anyOf as Partial<number> & Partial<string>. So the actual issue is caused by the openapi-typescript library.

from zod-to-json-schema.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.