乐闻世界logo
搜索文章和话题

How to make an optional property with a default value in Zod

2 个月前提问
2 个月前修改
浏览次数20

1个答案

1

在Zod中,创建具有默认值的可选属性是一种常见的需求,尤其是在处理数据验证或设置配置对象时。Zod是一个TypeScript友好的库,用于构建强大的、类型安全的验证方案。它允许我们轻松地定义数据结构,同时提供默认值和类型安全的保障。

要在Zod中创建一个带有默认值的可选属性,我们可以使用.optional().default()方法来实现。下面是一个具体的例子,展示如何定义一个带有默认值的可选属性:

typescript
import { z } from 'zod'; // 定义一个模式,其中包含一个带有默认值的可选属性 const PersonSchema = z.object({ name: z.string(), // 必需属性 age: z.number().optional(), // 可选属性,无默认值 isStudent: z.boolean().default(false), // 可选属性,有默认值 }); // 创建一个符合模式的对象 const person = PersonSchema.parse({ name: "张三", // age 属性被省略 // isStudent 也被省略,但会使用默认值 false }); console.log(person); // 输出: { name: '张三', isStudent: false } // 注意,如果没有提供 age,它将不会出现在结果对象中,因为它没有默认值 // 如果我们提供了所有值 const anotherPerson = PersonSchema.parse({ name: "李四", age: 25, isStudent: true, }); console.log(anotherPerson); // 输出: { name: '李四', age: 25, isStudent: true }

在这个例子中,PersonSchema定义了三个属性:nameageisStudent。其中,name是一个必需的字符串,age是一个可选的数字,而isStudent是一个带有默认值false的布尔型可选属性。

使用.default()方法时,Zod会自动将属性标记为可选,所以我们不需要额外的.optional()调用。如果解析时没有提供isStudent的值,Zod将会使用默认值false

通过这种方式,Zod不仅帮助确保数据的类型安全性,还能处理默认值和可选属性的情况,极大地简化了数据处理和验证的过程。

2024年7月21日 19:47 回复

你的答案