📈 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'"
})

文档 - 你需要知道的一切,从安装到集成