Skip to content

tinyval ​

小巧、快速、零依赖的数据校验库 —— 适用于浏览器和服务端。

  • 典型表单约 2.5 kB gzip,整个包约 5.5 kB —— 只有导入的部分才会进入打包结果
  • TypeScript 类型从 Schema 推导
  • 嵌套对象和数组、多余字段处理、类型转换、数据转换、异步检查

安装 ​

bash
npm install tinyval

试一试 ​

快速开始 ​

ts
import { validate, object, string, optional, pipe, trim, minLength, email, min, coerce, type Infer } from 'tinyval';

const User = object({
  name: pipe(string(), trim(), minLength(2)),
  email: pipe(string(), trim(), email()),
  age: optional(pipe(coerce.number(), min(0))),
});

type User = Infer<typeof User>; // { name: string; email: string; age?: number }

const result = validate(User, input);

if (result.valid) {
  result.data;   // 清洗后的、带类型的数据
} else {
  result.errors; // { name: '...', email: '...' }
}

在服务端使用 parse 更方便 —— 它返回数据或抛出 ValidationError。

组成部分 ​

部分内容
函数执行校验:validate、validateAsync、parse、parseAsync
Schema数据类型:string、number、object、array、optional、union、variant、coerce…
条件类似 Laravel:requiredIf、requiredWith、requiredWithout、prohibitedIf
对象操作基于已有 Schema 创建新 Schema:partial、pick、omit、extend
规则通过 pipe 进行检查和转换:minLength、email、sameAs、trim、check…

延伸阅读 ​