# 对象与嵌套

URL: https://caijiao.org/yup/object
Source: docs/yup/object.md
Description: 介绍如何使用 Yup 定义对象模式和处理嵌套对象的校验逻辑。

Yup 支持对象类型验证，可以对对象的每个字段进行独立校验，也支持嵌套对象的验证。

## 定义对象 Schema

```js
import * as yup from "yup";

const userSchema = yup.object({
  name: yup.string().required("姓名不能为空"),
  age: yup.number().required("年龄不能为空").positive().integer(),
  email: yup.string().email("邮箱格式不正确")
});
````

* `yup.object({...})`：定义对象模式
* 对象内部每个字段都可以使用 Yup 的各种类型和规则

## 嵌套对象

```js
const schema = yup.object({
  user: yup.object({
    name: yup.string().required(),
    age: yup.number().positive()
  }).required()
});
```

* 嵌套对象使用 `yup.object()`
* 可以递归定义多层嵌套

## 嵌套数组中的对象

```js
const schema = yup.object({
  users: yup.array().of(
    yup.object({
      name: yup.string().required(),
      age: yup.number().positive()
    })
  )
});
```

* `yup.array().of(schema)`：数组中的每个元素都必须符合指定 Schema
* 常用于表单中动态添加多条记录

## 小结

* `yup.object()` 定义对象模式
* 支持嵌套对象和数组
* 每个字段可以单独定义验证规则
