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 | Downloads (/wk) | Optimizations | Mean | Compare | ||||
|---|---|---|---|---|---|---|---|---|---|
typia (createIs) | Code snippet(Commented code is not benchmarked) | 11.0.3 | 244K | Precompiled | 49 ns | ||||
typia (is) | Code snippet | 11.0.3 | 244K | Precompiled | 63 ns | 1.3x | |||
typebox (schema compile) | Code snippet(Commented code is not benchmarked) | 1.1.5 | 204K | JIT | 64 ns | 1.32x | |||
typebox (compile) | Code snippet(Commented code is not benchmarked) | 1.1.5 | 204K | JIT | 65 ns | 1.34x | |||
ajv (compile) | Code snippet(Commented code is not benchmarked) | 8.18.0 | 258M | JIT | 87 ns | 1.8x | |||
io-ts | Code snippet | 2.2.22 | 2.6M | None | 123 ns | 2.53x | |||
ajv (validate) | Code snippet | 8.18.0 | 258M | JIT | 127 ns | 2.61x | |||
@railway-ts/pipelines | Code snippet | 0.1.27 | 155 | None | 658 ns | 13.55x | |||
valibot | Code snippet | 1.2.0 | 6.6M | None | 703 ns | 14.49x | |||
effect | Code snippet(Commented code is not benchmarked) | 3.19.19 | 8.3M | None | 709 ns | 14.61x | |||
arktype | Code snippet | 2.1.29 | 972K | JIT | 781 ns | 16.1x | |||
effect@beta | Code snippet(Commented code is not benchmarked) | 4.0.0-beta.5 | 8.3M | None | 1 μs | 21.83x | |||
typebox | Code snippet | 1.1.5 | 204K | JIT | 4 μs | 74.32x | |||
typebox (schema) | Code snippet | 1.1.5 | 204K | JIT | 4 μs | 80.82x | |||
yup | Code snippet | 1.7.1 | 10M | None | 96 μs | 1_969.79x | |||