parse
校验数据,有效时返回数据,无效时抛出 ValidationError。适合在服务端使用:请求无效时可以立即中止处理。
签名
ts
function parse<S extends Schema>(schema: S, value: unknown, options?: Options): Infer<S>参数
| 参数 | 类型 | 说明 |
|---|---|---|
schema | Schema | 用于校验数据的 Schema |
value | unknown | 任意数据 |
options | Options | { all?: boolean } —— 与 validate 相同 |
返回值
清洗后的、带类型的数据 —— 与 validate 的 result.data 相同。
抛出
ValidationError—— 数据无效时。包含errors和issues。Error—— Schema 中包含checkAsync时。请使用parseAsync。
示例
Express
ts
import { parse, ValidationError } from 'tinyval';
app.post('/users', (req, res) => {
try {
const user = parse(CreateUser, req.body);
// user 已校验且带有类型
} catch (e) {
if (e instanceof ValidationError) return res.status(422).json({ errors: e.errors });
throw e;
}
});环境变量
ts
const env = parse(
object({
PORT: optional(coerce.number(), 3000),
DATABASE_URL: string(),
DEBUG: optional(coerce.boolean(), false),
}),
process.env,
);
// 缺少 DATABASE_URL 时,应用会在启动时给出明确的错误