node: 16.14.0
typescript: 4.5.5
computed-types: 1.11.2
const schema = Schema.either(
{
foo: string.equals('X'),
bar: array.max(0),
baz: array.min(1),
},
{
foo: string.equals('Y'),
bar: array.min(1),
baz: array.max(0),
},
)
const obj = { foo: 'Y', bar: [], baz: [] }
const validator = schema.destruct()
const [err, validatedObj] = validator(obj)
The error message above is bar: Expect array to be minimum of 1 items (actual: 0). This makes sense for the value of foo === 'Y'.
Here's a curious observation... If I use const obj = { foo: 'X', bar: [], baz: [] }, then the error changes to foo: Expect value to equal "Y". Two notes:
- I think that the error is harder to understand since the error reports the path
foo to be wrong, when arguably it's the baz array that's not matching the schema.
- The error differs from the case given in the initial snippet. However, the cases are symmetric about
X and Y (apart from the order in the either definition), so one might expect the errors to be similar.
Obviously, the analogous error occurs if I swap the order of the schemas in the either definition.
This is really pedantic, I know. The library is great and hopefully this is just some useful feedback for thought.
node: 16.14.0
typescript: 4.5.5
computed-types: 1.11.2
The error message above is
bar: Expect array to be minimum of 1 items (actual: 0). This makes sense for the value offoo === 'Y'.Here's a curious observation... If I use
const obj = { foo: 'X', bar: [], baz: [] }, then the error changes tofoo: Expect value to equal "Y". Two notes:footo be wrong, when arguably it's thebazarray that's not matching the schema.XandY(apart from the order in theeitherdefinition), so one might expect the errors to be similar.Obviously, the analogous error occurs if I swap the order of the schemas in the
eitherdefinition.This is really pedantic, I know. The library is great and hopefully this is just some useful feedback for thought.