⚡⚠ Benchmark results have changed after switching to isolated node processes for each benchmarked package, see #864 ⚠⚡
- ajv
- bueno
- class-validator + class-transformer
- computed-types
- decoders
- io-ts
- jointz
- json-decoder
- marshal
- @mojotech/json-type-validaton
- myzod
- ok-computer
- purify-ts
- parse-dont-validate
- r-assign
- rescript-struct
- rulr
- runtypes
- @sapphire/shapeshift
- @sinclair/typebox
- simple-runtypes
- spectypes
- superstruct
- suretype
- toi
- ts-interface-checker
- ts-json-validator
- ts-runtime-checks
- tson
- ts-utils
- @typeofweb/schema
- valita
- Vality
- yup
- zod
These packages are capable of validating the data for type correctness.
E.g. if string was expected, but a number was provided, the validator should fail.
It has a validator function or method that returns a valid type casted value or throws.
const data: any = {} // `res` is now type casted to the right type const res = isValid(data)Or it has a type guard function that in a truthy block type casts the value.
const data: any = {} function isMyDataValid(data: any) { // isValidGuard is the type guard function provided by the package if (isValidGuard(data)) { // data here is "guarded" and therefore inferred to be of the right type return data } throw new Error('Invalid!') } // `res` is now type casted to the right type const res = isMyDataValid(data)npm run start- run benchmarks for all modulesnpm run start run zod myzod valita- run benchmarks only for a few selected modulesnpm run docs:serve- result viewernpm run test- run tests on all modules