Lzh on GitHub

Valibot 的心智模型主要分为 模式(schemas)、方法(methods)和 操作(actions)。由于每个功能都是作为一个独立的函数导入的,因此理解这个概念至关重要,因为它能让你更轻松地使用模块化 API 设计。

API 参考 为你提供了所有模式、方法和操作的绝佳概览。对于每一个,相应的参考页面还会列出其他相关的模式、方法和操作,以便更好地进行发现。

模式(Schemas)

模式是使用 Valibot 的起点。它们允许你验证 特定的数据类型,例如字符串、对象或日期。每个模式都是独立的。它们可以被重复使用,甚至可以嵌套以反映更复杂的数据结构。

import * as v from 'valibot';

const BookSchema = v.object({
  title: v.string(),
  numberOfPages: v.number(),
  publication: v.date(),
  tags: v.array(v.string()),
});

每个模式函数都会返回一个可访问的对象,其中包含其所有属性。然而,在大多数情况下,你不需要直接访问它们。相反,你会使用能帮助你修改或使用模式的方法。

方法(Methods)

方法帮助你 修改或使用模式。例如,parse 方法可以帮助你根据模式解析未知数据。当你使用方法时,你总是将模式作为第一个参数传递。

import * as v from 'valibot';

const BookSchema = v.object({/*...*/});

function createBook(data: unknown) {
  return v.parse(BookSchema, data);
}

大多数方法都与模式一起使用。但是,也有一些例外,例如 forwardflatten,它们与操作或问题(issues)一起使用。

操作(Actions)

操作帮助你 进一步验证或转换 特定的数据类型。它们专门与 pipe 方法结合使用,pipe 方法通过添加额外的验证和转换规则来扩展模式的功能。例如,下面的模式可用于修剪字符串并检查它是否是有效的电子邮件地址。

import * as v from 'valibot';

const EmailSchema = v.pipe(v.string(), v.trim(), v.email());

操作非常强大。你几乎可以用它们做任何事情。除了上面示例中展示的基本验证和转换之外,它们还允许你使用 readonlybrand 等操作来修改输出类型。