dev-resources.site
for different kinds of informations.
Runtime type validators
Published at
9/24/2023
Categories
typescript
typesystem
Author
stereobooster
Where can be used
- validate http request from client (at server side)
- validate http response from server (at client side)
- validate data from untyped storage, for example localStorage, JSON columns in DB, etc.
- validate env variables
- validate CLI arguments
- validate configuration files
- validate data from URL (query params)
Features
- Basic validation - can validate static types at runtime (can be restricted to JSON type)
- Serialisation / deserialisation - for example, TS/JS supports
Date
, but JSON doesn’t. So you need to do conversion in order to support it - Compatibility with other schemas - there are tools which can convert from- or to- another schemas, for example JSONSchema, OpenAPI etc
- Strict or permissive mode - would object be accepted if it contains extra fields
- Helpful error messages - if in case of failed validation it points what exactly went wrong or simply dismisses the input
- AOT (ahead of time) - can it use type information in order to produce validation libraries or faster serialiser, deserialiser
- Custom types - can user create custom types, for example type for email, instead of string
Libraries
Not a full list, but rather a high level overview
Fast
-
typia
- Doesn’t need extra schema definition. Uses AOT to generate validators, serialisers and deserialisers directly from TypeScript types
- Supports protocol buffers
-
typebox
- Supports all JSON, JS, JSONSchema, but for TS discriminated unions you need to use typebox-validators
- Can use JIT (and AOT?)
-
ts-runtime-checks
- Uses AOT
See: Runtype Benchmarks
Popular
Other
- typeschema
- valibot
- adonisjs/validator
- io-ts and newtype-ts
- deepkit runtime types
- runtypes
- superstruct
- safen
- arktype
- rescript-struct
- ts-json-validator
- valita
- to-typed
- fastest-validator
- runtypes
- computed_types
- subshape
- effect-ts/schema
- TypeRunner
- jointz
- ts-auto-guard
- tserial
- ts-runtime
Related
Articles
12 articles in total
Run Cystoscape.js with Node.js
read article
Hugo ideal image
read article
Tauri instead of Puppeteer or Playwright?
read article
Distributing executable binaries in npm package
read article
Useful modern tools for static websites
read article
Runtime type validators
currently reading
Text to diagram
read article
Portable markdown links
read article
Speed up navigation between pages
read article
Markdown parsers
read article
Component libraries trends
read article
Distributing CSS in npm package
read article
Featured ones: