ArkType je validační knihovna pro TypeScript, která přináší plně typovanou validaci. Cílem knihovny je poskytnout nástroje pro validaci, které jsou maximálně výkonné, bezpečné a přitom flexibilní — a to vše bez nutnosti duplikace typů nebo ručního mapování.
Na rozdíl od knihoven jako Zod nebo Valibot, ArkType používá vlastní deklarativní syntax založenou na řetězcích, která definuje jak validaci, tak i TypeScript typy současně.
Základní použití
import { type } from 'arktype';
const User = type({
name: 'string',
age: 'number > 0',
});
User({ name: 'Anna', age: 28 }); // validní
User({ name: 'Petr', age: -3 }); // vyhodí errortype()definuje validátor i typ zároveň- validace probíhá při runtime
- automaticky získáš odpovídající TypeScript typ
type UserType = typeof User.infer;
// => { name: string; age: number }Syntaxe validací
ArkType využívá čitelnou deklarativní syntaxi:
| Výraz | Popis |
|---|---|
'string' | Hodnota musí být string |
'number > 0' | Číslo větší než 0 |
'boolean | undefined' | volitelný boolean |
'string[]' | Pole řetězců |
'record<string>' | Objekt s textovými hodnotami |
Příklad složené validace:
const Product = type({
id: 'string',
price: 'number >= 0',
tags: 'string[]?',
});Bezpečné parsování
Pro bezpečnou validaci bez erroru slouží funkce is():
const isUser = is(User);
if (isUser({ name: 'Anna', age: 25 })) {
// objekt je validní a typově správný
}Pokročilé příklady
Literály a enum-like hodnoty
const Status = type("'active' | 'inactive' | 'pending'");Objekt s dynamickými klíči
const Scores = type('record<number > 0>');Funkce jako validátor
const Email = type((val): val is string =>
typeof val === 'string' && val.includes('@'));Porovnání s jinými knihovnami
| Funkce | ArkType | Zod | Valibot |
|---|---|---|---|
| Deklarativní syntax | ✅ Ano | ❌ Ne | ❌ Ne |
| Velikost (min+gz) | ~5 kB | ~18 kB | ~1 kB |
| TypeScript support | 🧠 Výborný | ✅ Výborný | ✅ Velmi dobrý |
| Výkon | 🚀 Velmi rychlý | ⚡ Dobrý | ⚡ Rychlý |
ArkType je ideální tam, kde potřebuješ silnou typovou bezpečnost, čistou validaci a vysoký výkon – typicky v aplikacích se složitým datovým modelem nebo v kombinaci s tRPC.
Shrnutí
ArkType je moderní knihovna pro validaci v TypeScriptu, která klade důraz na výkon, bezpečnost a maximální využití typového systému. Její deklarativní syntax je rychlá na zápis a snadná na čtení, přičemž validace i typování zůstávají plně synchronizované.