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

How to validate a string literal type using zod

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

1个答案

1

在使用Zod进行数据验证时,针对字符串文字类型(也称为字面量类型)的验证是一种常见需求。字符串文字类型是指某个具体的字符串值。在Zod中,可以使用z.literal来指定并验证特定的字符串值。

如何使用z.literal进行验证

首先,我们需要安装Zod库,如果你还没有安装,可以使用以下命令安装:

bash
npm install zod

然后,你可以创建一个简单的验证模式来检查某个变量是否与指定的字符串文字相匹配。这里是一个具体的例子:

javascript
import { z } from 'zod'; // 定义一个Zod模式,这里只接受字符串'admin'作为合法输入 const AdminRole = z.literal('admin'); // 使用这个模式来验证数据 try { AdminRole.parse('admin'); // 有效,因为匹配了'admin' console.log('验证通过!'); } catch (error) { console.error('验证失败:', error); } try { AdminRole.parse('user'); // 无效,因为不匹配'admin' } catch (error) { console.error('验证失败:', error); }

扩展用例:使用union处理多个字符串文字

如果你需要验证的是多种固定字符串中的一种,可以使用z.union来组合多个z.literal

javascript
import { z } from 'zod'; // 定义一个模式,接受'admin', 'user', 或 'guest'作为合法输入 const UserRole = z.union([z.literal('admin'), z.literal('user'), z.literal('guest')]); // 验证数据 try { UserRole.parse('user'); // 有效 console.log('验证通过!'); } catch (error) { console.error('验证失败:', error); } try { UserRole.parse('manager'); // 无效 } catch (error) { console.error('验证失败:', error); }

总结

使用z.literalz.union结合z.literal可以有效地为特定的字符串值或一组特定的字符串值建立验证规则。这种方法在处理配置项、权限角色等情况时非常有用,确保数据的准确性和程序的稳定性。

2024年7月21日 19:47 回复

你的答案