百科.dev
全部条目在线工具AI 编程趋势榜开源项目技术资讯提交条目
登录
< 返回工具列表
R

runtypes

> 编程语言
开源

静态类型的运行时验证

2.7K stars0 点赞0 次浏览
访问官网GitHub

工具介绍

静态类型的运行时验证

Runtypes 允许你获取那些没有保证的值,并检查它们是否符合某种类型 A。这是通过可组合的类型验证器来实现的,这些验证器涵盖原始类型、字面量、数组、元组、对象、联合类型、交叉类型等。

示例

假设你有表示小行星、行星、飞船和船员的对象。在 TypeScript 中,你可以这样编写它们的类型:

typescript
type Vector = [number, number, number]

type Asteroid = {
	type: "asteroid"
	location: Vector
	mass: number
}

type Planet = {
	type: "planet"
	location: Vector
	mass: number
	population: number
	habitable: boolean
}

type Rank = "captain" | "first mate" | "officer" | "ensign"

type CrewMember = {
	name: string
	age: number
	rank: Rank
	home: Planet
}

type Ship = {
	type: "ship"
	location: Vector
	mass: number
	name: string
	crew: CrewMember[]
}

type SpaceObject = Asteroid | Planet | Ship

如果本应具有这些形状的对象是从某个外部来源(例如 JSON 文件)加载的,我们需要验证这些对象是否符合其规范。我们通过以非常直接的方式构建相应的 Runtype 来实现这一点:

…

(有关更完整的版本,请参阅 examples 目录。)

现在,如果我们有一个假定的 SpaceObject,我们可以这样验证它:

typescript
// spaceObject: SpaceObject
const spaceObject = SpaceObject.check(value)

如果该对象不符合类型规范,check 将抛出一个异常。

错误信息

当验证失败时,你的 runtype 会抛出一个 ValidationError 对象,其中包含描述问题所在的详细信息。该对象中提供以下属性:

  • name:始终为 "ValidationError"
  • message:一个 string,用于概括整体问题
  • failure:一个 Failure,以结构化方式描述问题

如果你想检查验证失败的原因,请查看 failure 对象:

  • code:一个 Failcode,大致对问题进行了分类
  • message:一个 string,总体概括了问题
  • expected:产生此失败的 runtype

Issues· 0 开放

查看全部 Issues在 GitHub 打开

暂无开放 Issues,或尚未同步最近议题。

> 标签

TypeScriptruntimetypestypescriptvalidation

暂无评论,来聊聊你的看法吧

> 工具信息

发布日期2026年8月1日
最后更新2026年9月17日
分类编程语言
定价开源

> 相关工具

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言