neovim-mark@2x
Bun Logo

ArkType

TypeScript 的 1:1 验证器,从编辑器到运行时都经过优化

Loading playground...

Type-level feedback with each keystroke- no plugins or build steps required.

无与伦比的开发体验

输入你已经熟悉的语法,享受前所未有的安全性和自动补全功能
const  = type({
	name: "string",
	platform: "'android' | 'ios'",
	"version?": "number | s
  • number | string
  • number | symbol
"
})

更好的错误提示

提供深度可定制的错误信息,并带有极好的默认设置
const  = User({
	name: "Alan Turing",
	platform: "enigma",
	versions: [0, "1", 0n]
})

if ( instanceof type.errors) {
	// hover summary to see validation errors
	console.error(.)
}

清晰简洁

定义更短,类型错误更易读,悬浮提示只告诉你最重要的内容
// hover me
const  = type({
	name: "string",
	platform: "'android' | 'ios'",
	"versions?": "number | string)[]"
TypeScript: Unmatched ) before [] 
})

更快……一切

运行时比 Zod4 快 20 倍,比 Yup 快 2000 倍,同时编辑器性能将让你重新体验自动补全的原本感受
Object Validation, Node v23.6.1
(source)
ArkType ⚡ 14 nanoseconds
   Zod 👍 281 nanoseconds
   Yup 🐌 40755 nanoseconds*
*scaling generously logarithmized

深度可推敲性

ArkType 使用集合论来理解和展示运行时类型之间的关系,像 TypeScript 在编译时那样
.extends("object") // true
.extends("string") // false
// true (string is narrower than unknown)
.extends({
	name: "unknown"
})
// false (string is wider than "Alan")
.extends({
	name: "'Alan'"
})

内在优化

每个 schema 都是内部标准化的,并被简化到最纯粹、最快的表示形式
// all unions are optimally discriminated
// even if multiple/nested paths are needed
const  = type({
	kind: "'admin'",
	"powers?": "string[]"
}).or({
	kind: "'superadmin'",
	"superpowers?": "string[]"
}).or({
	kind: "'pleb'"
})

文档说明

从安装到集成的所有你需要了解的内容