> For the complete documentation index, see [llms.txt](https://ploegert.gitbook.io/til/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ploegert.gitbook.io/til/programmy/javascript/yup-schemas-are-validated-asynchronously.md).

# Yup Schemas Are Validated Asynchronously

[Yup](https://github.com/jquense/yup) provides a flexible object schema validation DSL. For instance, if you want to enforce that a certain value is a number, you can define something like this:

```javascript
const numSchema = yup.number();
```

You can then validate anything against that schema.

```javascript
const validator = (val) => {
  numSchema.validate(val)
    .then(result => {
      console.log(result); // it is the value of `val`
      return true;
    })
    .catch(error => {
      console.log(error.errors); // array of validation error messages
      return false;
    });
};
```

The validation is async, so if it succeeds the `then` block is hit. If the validation fails, it will fall through to the `catch`.

```javascript
validator(5) // => true
validator('what') // => false
```
