Checking if a given value matches the schema. This is different to parsing because it doesn't return a new value.
import * as v from "valibot";
import { personSchema } from "./schemas";
if (v.is(personSchema, data)) {
// data is narrowed to Person
}
Optimizations
| Library | Version | Optimizations | Mean | Compare | |||
|---|---|---|---|---|---|---|---|
typebox (compile) | Code snippet(Commented code is not benchmarked) | 1.0.51 | JIT | 50 ns | |||
typia (createIs) | Code snippet(Commented code is not benchmarked) | 10.0.2 | Precompiled | 1 μs | 21.52x | ||
typia (is) | Code snippet | 10.0.2 | Precompiled | 1 μs | 22.95x | ||
typebox | Code snippet | 1.0.51 | None | 2 μs | 33.98x | ||
ajv (compile) | Code snippet(Commented code is not benchmarked) | 8.17.1 | JIT | 3 μs | 67.96x | ||
ajv (validate) | Code snippet | 8.17.1 | JIT | 3 μs | 68.74x | ||
arktype | Code snippet | 2.1.25 | None | 7 μs | 137.67x | ||
valibot | Code snippet | 1.1.0 | None | 12 μs | 246.24x | ||
effect | Code snippet(Commented code is not benchmarked) | 3.19.3 | None | 19 μs | 390.11x | ||
joi | Code snippet | 18.0.1 | None | 36 μs | 714.57x | ||
yup | Code snippet | 1.7.1 | None | 145 μs | 2,915.26x |