Defaulted is not coerced through validate

Author: BuyMyBeardCreated Dec 19, 2024Updated Dec 19, 2024

Take the following code snippet:

typescript
const [err, data] = validate({str: 'str'}, object({str: string(), def: defaulted(string(), '')}));
console.log(err);
console.log(data);

The previous code will have this error message in the err object: StructError: At path: def -- Expected a string, but received: undefined.

Now take this code snippet instead:

typescript
create({str: 'str'}, object({str: string(), def: defaulted(string(), '')}));

This code works perfectly.

According to the tsdoc included with validate Validate a value against a struct, returning an error if invalid, or the value (with potential coercion) if valid., the value should still be coerced by defaulted, just like create.

Source: ianstormtaylor/superstruct