ArkType:符合人体工程学的 TS 验证器,速度比 Zod 快 100 倍
ArkType 是一个针对 TypeScript 的验证器,专注于开发者体验和性能。它使用与 TypeScript 相同的类型语法,提供更好的错误信息和代码提示,简化了类型定义。ArkType 的核心优势在于其极快的运行时速度,比 Zod 快 100 倍,比 Yup 快 2000 倍。它还具备深度自省能力,能够理解类型之间的关系,并进行内在优化,确保验证效率。
📈 ArkType 2.1 发布 📈
搜索
⌘``K
neovim-mark@2x Bun Logo
ArkType
TypeScript 的 1:1 验证器,从编辑器到运行时都经过优化 PlaygroundGet Started 加载 Playground... Playground 模式 每次按键都有类型级别的反馈 - 无需插件或构建步骤。
无与伦比的 DX
使用您已经知道的类型语法,具有前所未有的安全性和自动补全功能。
constUser= type({
name: "string",
platform: "'android' | 'ios'",
"version?": "number | s
* number | string
* number | symbol
"
})
更好的错误信息
深度可定制的消息,并具有出色的默认值。
constout= User({
name: "Alan Turing",
platform: "enigma",
versions: [0, "1", 0n]
})
if (outinstanceof type.errors) {
// 悬停以查看验证错误的摘要
console.error(out.summary)
}
清晰和简洁
定义长度减半,类型错误可读性提高两倍,悬停提示会告诉你真正重要的内容。
// 悬停查看
constUser= type({
name: "string",
platform: "'android' | 'ios'",
"versions?": "number | string)[]"
TypeScript: Unmatched ) before []
})
更快... 一切都更快
运行时速度比 Zod 快 100 倍,比 Yup 快 2,000 倍,编辑器性能会让你想起自动完成应该有的感觉。
对象验证,Node v23.6.1
(source) 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'"
})
内在优化
每个 schema 在内部都被规范化和简化为其最纯粹和最快的表示形式。
// 所有联合类型都得到最佳区分
// 即使需要多个/嵌套路径
constAccount= type({
kind: "'admin'",
"powers?": "string[]"
}).or({
kind: "'superadmin'",
"superpowers?": "string[]"
}).or({
kind: "'pleb'"
})