Giter VIP home page Giter VIP logo

Comments (10)

sbarfurth avatar sbarfurth commented on May 28, 2024 1

Yes, this is intended. It works much like an interface would validate a class if you will. Imagine simple interface.

interface Animal {
  name: string;
}

class Dog implements Animal {
  name: string;
  race: string;
}

A lot of classes could be made from this, they only need to implement what is there. That's how interfaces usually work and that is how schema works.

I guess an exact schema validation may be an interesting thing. Gotta ask @imbrn what he thinks.

from v8n.

imbrn avatar imbrn commented on May 28, 2024 1

Hey guys, how's it going?

So @dbismut, as @brfrth explained, the schema acts most like an interface, so the intention is indeed to validate extended objects. But I liked the idea of having a strict mode for that. If you guys agree, I think we should go with the modifier based version.

from v8n.

dbismut avatar dbismut commented on May 28, 2024

Ok! Just to explain my usecase, I'm in a situation where I want to detect the schema of an object. To do so I'm testing the object against a list of schemas. First schema from the list that matches the object is the one.

My problem comes as one schema is Point2d {x,y} and another is Point3d {x,y,z}. You see me coming but if Point2d is tested before Point3d, all {x,y,z} objects will be marked as Point2d.

It's no big deal as in my case I just need to test Point3d before Point2d but I was curious to know if I was missing something.

from v8n.

sbarfurth avatar sbarfurth commented on May 28, 2024

I get the idea of an exact schema validation for multiple use cases. Worth discussing.

from v8n.

dbismut avatar dbismut commented on May 28, 2024

I guess checking if the number of keys are equal would suffice?

from v8n.

sbarfurth avatar sbarfurth commented on May 28, 2024

I guess so. You can add it if you want and pull request.

from v8n.

dbismut avatar dbismut commented on May 28, 2024

I'm just not sure about the api though? schema().strict()?

from v8n.

sbarfurth avatar sbarfurth commented on May 28, 2024

Why not add an optional argument to schema?

function schema(schema, strict = false) {
  // ...
}

Strict would be a modifier if anything, meaning it would be chained the other way.

v8n()
  .strict.schema({})
  .test({});

I honestly like both. The modifier is harder to implement though a tad more elegant.

from v8n.

dbismut avatar dbismut commented on May 28, 2024

Oh I agree.

Plus if strict is set, we should first check if the number of keys are equal and skip further validation if not. That's probably faster to check negatives than with chaining strict.

from v8n.

sbarfurth avatar sbarfurth commented on May 28, 2024

Closing this in favor of #191, thanks for your idea and input.

from v8n.

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.