ArkType (CZ článek)

Back to blog

Validace dat v TypeScriptu jednoduše a bezpečně

3 min read
Table of Contents

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í error
  • type() 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ýrazPopis
'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

FunkceArkTypeZodValibot
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é.