Comments (2)
Hello and thank you for the response! This is exactly what I am looking for. I achvied to miss the underlying
property somehow...
Mostly I use it for definitons. If Package A defines a really generic one I want to specialize the definitions in a depending package.
In your first example it is not really the same since I am then able to have a configuration without the "A"s (so it is smaller and less repetitive) and fill up the "A"s incode to later delegate it. But if I need more configuration (like a "C") then it is added automatically.
Thank you very much!
from runtypes.
There's no straightforward way to do it like that. Constraint
(and also Intersect
) runtype only knows about its underlying
runtype (intersectees
for Intersect
), so if you want to manipulate the underlying one, you have to unwrap first and then rewrap it by a constraint function again, e.g.
const myRuntype = Record({
A: Number,
B: Number,
}).withConstraint((r) => {
return r.A > r.B || `A has to be bigger than B`;
});
const myOtherRuntype = myRuntype.underlying.omit("A").withConstraint((r) => {
if (myRuntype.underlying.pick("A").guard(r)) {
return r.A > r.B || `A has to be bigger than B`;
} else {
return `A has to be present and a number`;
}
});
But I don't see the motivation of this, as the above myRuntype
and myOtherRuntype
are essentially the same.
Optionalizing a property can be done by:
myRuntype.underlying.omit('A').extend({ A: myRuntype.underlying.fields["A"].optional() }).withConstraint(...)
Setting an optional property to required is, if we have:
const myRuntype = Record({
A: Number.optional(),
B: Number,
}).withConstraint(...);
then:
myRuntype.underlying.extend({ A: myRuntype.underlying.fields["A"].underlying }).withConstraint(...)
from runtypes.
Related Issues (20)
- Is there a way to omit everything that's not defined by the Record instance? HOT 1
- Create runtypes from existing TypeScript types? HOT 1
- Printable form of type from runtype? HOT 1
- Unuseful error message on typechecking HOT 1
- Cannot validate optional+null circulare fields HOT 4
- Optional types in Tuple HOT 1
- How check for ObjectId? HOT 3
- Function which accepts a runtype and omits some fields HOT 1
- Constraint::reflect does not expose .underlying
- Support for Set type HOT 2
- [Feature Request] Type Guard for ValidationError HOT 2
- Option to return errors instead of throwing them for performant validation. HOT 4
- Runtypes-like `.guard()` HOT 1
- How do I exclude undefined properties from record? HOT 2
- Is it possible to have more than one brand HOT 2
- Type validated by Dictionary is different than returned type
- How do I define an array which is optional yet in case it was defined it shouldn't be empty ? HOT 2
- Performance
- Publish to deno.land/x HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from runtypes.