Documentation
Coverage

Coverage

TypeSchema supports all major schema validation libraries:

ProjectPopularitywrapvalidateassertInferInferInExample schema
zod (opens in a new tab)GitHub stars✅✅✅✅✅z.string()
yup (opens in a new tab)GitHub stars✅✅✅✅✅string()
joi (opens in a new tab)GitHub stars✅✅✅❌❌Joi.string()
ajv (opens in a new tab)GitHub stars✅✅✅❌❌{type: "string"}
superstruct (opens in a new tab)GitHub stars✅✅✅✅❌string()
io-ts (opens in a new tab)GitHub stars✅✅✅✅✅t.string
ow (opens in a new tab) (^0.28.2)GitHub stars✅✅✅✅✅ow.string
typia (opens in a new tab)GitHub stars✅✅✅✅✅typia.createAssert<string>()
valibot (opens in a new tab)GitHub stars✅✅✅✅✅string()
typebox (opens in a new tab)GitHub stars✅✅✅✅✅Type.String()
deepkit (opens in a new tab)GitHub stars✅✅✅❌❌typeOf<string>()
effect (opens in a new tab)GitHub stars✅✅✅✅✅S.string
runtypes (opens in a new tab)GitHub stars✅✅✅✅✅String
arktype (opens in a new tab)GitHub stars✅✅✅✅✅type('string')

Custom validations are also supported:

export function assertString(data: unknown): string {
  if (typeof data !== 'string') {
    throw new Error('Expected a string, got: ' + data);
  }
  return data;
}
 
await validate(assertString, '123'); // {data: '123'}
await validate(assertString, 123); // {issues: [`ValidationIssue`]}
 
await assert(assertString, '123'); // '123'
await assert(assertString, 123); // throws `AggregateError`