TypeBox and TypeMap
Package Names
Use typebox , not @sinclair/typebox . The @sinclair/typebox package is deprecated.
// Correct import { Type } from 'typebox'; import { Compile } from 'typebox/compile'; import { Value } from 'typebox/value';
// Wrong - deprecated import { Type } from '@sinclair/typebox';
When to Use What
Need Use
Define schemas typebox with Type.*
Standard Schema support @sinclair/typemap
Translate between libraries @sinclair/typemap
High-performance validation Compile() from either
One-off validation Value.Check() from typebox
TypeMap for Standard Schema
TypeBox doesn't implement Standard Schema natively. Use TypeMap:
import { Compile } from '@sinclair/typemap'; import { Type } from 'typebox';
// From TypeBox schema const validator = Compile( Type.Object({ name: Type.String(), age: Type.Number(), }), );
// Standard Schema interface const result = validator['~standard'].validate({ name: 'Alice', age: 30 });
TypeMap Accepts Everything
Compile() from TypeMap accepts:
import { Compile } from '@sinclair/typemap';
// TypeScript syntax strings
const v1 = Compile({ name: string, age: number });
// TypeBox schemas const v2 = Compile(Type.Object({ x: Type.Number() }));
// Zod schemas const v3 = Compile(z.object({ x: z.number() }));
// Valibot schemas const v4 = Compile(v.object({ x: v.number() }));
All return validators with ['~standard'].validate() .
TypeBox Compile vs TypeMap Compile
// TypeBox Compile - returns Validator with Check/Parse import { Compile } from 'typebox/compile'; const validator = Compile(schema); validator.Check(value); // boolean validator.Parse(value); // throws or returns typed value
// TypeMap Compile - returns Standard Schema validator import { Compile } from '@sinclair/typemap'; const validator = Compile(schema); validator['~standard'].validate(value); // { value } or { issues }
Use TypeMap when you need Standard Schema compatibility. Use TypeBox directly when you don't.
Translation Functions
TypeMap translates between libraries:
import { Syntax, TypeBox, Zod, Valibot } from '@sinclair/typemap';
const syntax = { name: string };
const tbSchema = TypeBox(syntax);
const zodSchema = Zod(syntax);
const valibotSchema = Valibot(syntax);
const backToSyntax = Syntax(zodSchema);
Performance
TypeMap's compiled validators are ~100x faster than native Zod:
Library 10M iterations
Zod native ~4,669ms
TypeMap ~47ms
References
-
TypeMap is the Real Deal
-
TypeBox is a Beast
-
Why TypeBox Won't Implement Standard Schema