ArkType — новый TS-валидатор, который в 100 раз быстрее Zod! 🚀 Идеальная эргономика + бешеная скорость. Теперь TypeScript-разработка станет ещё удобнее. Попробуйте сами!
ArkType: 1:1 валидатор TypeScript, оптимизированный от редактора до рантайма 📈 Анонс ArkType 2.1 📈 Поиск ⌘ K Twitch Bluesky X Discord neovim-mark@2x Bun Logo ArkType 1:1 валидатор TypeScript, оптимизированный от редактора до рантайма Playground Начать Загрузка playground… Режим Playground Тип-ориентированная обратная связь с каждым нажатием клавиши — никаких плагинов или шагов сборки не требуется.
Непревзойденный DX Синтаксис типов, который вы уже знаете, с безопасностью и автодополнением, непохожими ни на что, что вы видели раньше const User
type ( { name: «string», platform: «‘android’ | ‘ios'», «version?»: «number | s number | s tring number | s y mbol» } )
Лучшие ошибки Глубоко настраиваемые сообщения с отличными значениями по умолчанию const out
User ( { name: «Alan Turing», platform: «enigma», versions: [ 0, «1», 0n ] } ) if ( out instanceof type.errors) { // наведите курсор на summary, чтобы увидеть ошибки валидации console.error(out.summary) }
Ясность и лаконичность Определения в два раза короче, ошибки типов в два раза читабельнее, а подсказки показывают только то, что действительно важно // наведите на меня const User
type ( { name: «string», platform: «‘android’ | ‘ios'», «versions?»: «number | string)[]» TypeScript: Unmatched ) before [] } )
Быстрее… всё В 100 раз быстрее Zod и в 2000 раз быстрее Yup в рантайме, с производительностью в редакторе, которая напомнит вам, каким должно быть автодополнение Валидация объектов, Node v23.6.1 (источник) ArkType ⚡ 14 наносекунд Zod 👍 1397 наносекунд Yup 🐌 40755 наносекунд масштабирование щедро логарифмировано
Глубокая интроспективность ArkType использует теорию множеств, чтобы понимать и раскрывать отношения между вашими типами в рантайме так же, как TypeScript делает это во время компиляции User.extends(«object») // true User.extends(«string») // false // true (string уже, чем unknown) User.extends( { name: «unknown» } ) // false (string шире, чем «Alan») User.extends( { name: «‘Alan'» } )
Внутренняя оптимизация Каждая схема внутренне нормализована и сведена к своему самому чистому и быстрому представлению // все объединения оптимально дискриминированы // даже если требуются множественные/вложенные пути const Account
type ( { kind: «‘admin'», «powers?»: «string[]» } ) .or ( { kind: «‘superadmin'», «superpowers?»: «string[]» } ) .or ( { kind: «‘pleb'» } )
Документация Всё, что вам нужно знать, от установки до интеграции
