<div align='center'>
<h1>TypeBox</h1>
<p>JSON Schema Type Builder with Static Type Resolution for TypeScript</p>
<img src="https://github.com/sinclairzx81/typebox/blob/master/typebox.png?raw=true" />
<br />
<br />
[![npm version](https://badge.fury.io/js/%40sinclair%2Ftypebox.svg)](https://badge.fury.io/js/%40sinclair%2Ftypebox)
[![Downloads](https://img.shields.io/npm/dm/%40sinclair%2Ftypebox.svg)](https://www.npmjs.com/package/%40sinclair%2Ftypebox)
[![GitHub CI](https://github.com/sinclairzx81/typebox/workflows/GitHub%20CI/badge.svg)](https://github.com/sinclairzx81/typebox/actions)
</div>
<a name="Install"></a>
## Install
#### Npm
```bash
$ npm install @sinclair/typebox --save
```
#### Deno
```typescript
import { Static, Type } from 'npm:@sinclair/typebox'
```
#### Esm
```typescript
import { Static, Type } from 'https://esm.sh/@sinclair/typebox'
```
## Example
```typescript
import { Static, Type } from '@sinclair/typebox'
const T = Type.Object({ // const T = {
x: Type.Number(), // type: 'object',
y: Type.Number(), // required: ['x', 'y', 'z'],
z: Type.Number() // properties: {
}) // x: { type: 'number' },
// y: { type: 'number' },
// z: { type: 'number' }
// }
// }
type T = Static<typeof T> // type T = {
// x: number,
// y: number,
// z: number
// }
```
<a name="Overview"></a>
## Overview
TypeBox is a runtime type builder that creates in-memory JSON Schema objects that can be statically inferred as TypeScript types. The schemas produced by this library are designed to match the static type assertion rules of the TypeScript compiler. TypeBox enables one to create a unified type that can be statically checked by TypeScript and runtime asserted using standard JSON Schema validation.
This library is designed to enable JSON schema to compose with the same flexibility as TypeScript's type system. It can be used as a simple tool to build up complex schemas or integrated into REST or RPC services to help validate data received over the wire.
License MIT
## Contents
- [Install](#install)
- [Overview](#overview)
- [Usage](#usage)
- [Types](#types)
- [Standard](#types-standard)
- [Extended](#types-extended)
- [Modifiers](#types-modifiers)
- [Options](#types-options)
- [Generics](#types-generics)
- [References](#types-references)
- [Recursive](#types-recursive)
- [Conditional](#types-conditional)
- [Template Literal](#types-template-literal)
- [Guards](#types-guards)
- [Unsafe](#types-unsafe)
- [Strict](#types-strict)
- [Values](#values)
- [Create](#values-create)
- [Clone](#values-clone)
- [Check](#values-check)
- [Convert](#values-convert)
- [Cast](#values-cast)
- [Equal](#values-equal)
- [Hash](#values-hash)
- [Diff](#values-diff)
- [Patch](#values-patch)
- [Errors](#values-errors)
- [Mutate](#values-mutate)
- [Pointer](#values-pointer)
- [TypeCheck](#typecheck)
- [Ajv](#typecheck-ajv)
- [TypeCompiler](#typecheck-typecompiler)
- [TypeSystem](#typesystem)
- [Types](#typesystem-types)
- [Formats](#typesystem-formats)
- [Policies](#typesystem-policies)
- [Benchmark](#benchmark)
- [Compile](#benchmark-compile)
- [Validate](#benchmark-validate)
- [Compression](#benchmark-compression)
- [Contribute](#contribute)
<a name="usage"></a>
## Usage
The following shows general usage.
```typescript
import { Static, Type } from '@sinclair/typebox'
//--------------------------------------------------------------------------------------------
//
// Let's say you have the following type ...
//
//--------------------------------------------------------------------------------------------
type T = {
id: string,
name: string,
timestamp: number
}
//--------------------------------------------------------------------------------------------
//
// ... you can express this type in the following way.
//
//--------------------------------------------------------------------------------------------
const T = Type.Object({ // const T = {
id: Type.String(), // type: 'object',
name: Type.String(), // properties: {
timestamp: Type.Integer() // id: {
}) // type: 'string'
// },
// name: {
// type: 'string'
// },
// timestamp: {
// type: 'integer'
// }
// },
// required: [
// 'id',
// 'name',
// 'timestamp'
// ]
// }
//--------------------------------------------------------------------------------------------
//
// ... then infer back to the original static type this way.
//
//--------------------------------------------------------------------------------------------
type T = Static<typeof T> // type T = {
// id: string,
// name: string,
// timestamp: number
// }
//--------------------------------------------------------------------------------------------
//
// ... then use the type both as JSON schema and as a TypeScript type.
//
//--------------------------------------------------------------------------------------------
import { Value } from '@sinclair/typebox/value'
function receive(value: T) { // ... as a Static Type
if(Value.Check(T, value)) { // ... as a JSON Schema
// ok...
}
}
```
<a name='types'></a>
## Types
TypeBox types are JSON schema fragments that can be composed into more complex types. Each fragment is structured such that a JSON schema compliant validator can runtime assert a value the same way TypeScript will statically assert a type. TypeBox provides a set of Standard types which are used create JSON schema compliant schematics as well as an Extended type set used to create schematics for constructs native to JavaScript.
<a name='types-standard'></a>
### Standard Types
The following table lists the Standard TypeBox types. These types are fully compatible with the JSON Schema Draft 6 specification.
```typescript
┌────────────────────────────────┬─────────
没有合适的资源?快使用搜索试试~ 我知道了~
1、Vue示例项目,添加一个新页面
共2000个文件
js:1326个
md:492个
json:152个
需积分: 5 0 下载量 34 浏览量
2024-07-08
17:24:39
上传
评论
收藏 41.61MB ZIP 举报
温馨提示
1、Vue示例项目,添加一个新页面
资源推荐
资源详情
资源评论
收起资源包目录
1、Vue示例项目,添加一个新页面 (2000个子文件)
testServerConnection.0WapKERv.css 99KB
index-B5iDPo7P.css 87KB
uiMode.Btn2TM9w.css 59KB
codeMirrorModule-ez37Vkbh.css 6KB
codeMirrorModule.ez37Vkbh.css 6KB
xtermModule.DSXBckUd.css 4KB
index.CrbWWHbf.css 1KB
index.html 425KB
index.html 1KB
index.html 1KB
snapshot.html 799B
uiMode.html 634B
compiler-sfc.esm-browser.js 1.52MB
rollup.js 792KB
compiler-sfc.cjs.js 658KB
cli-api.E07AF1Yq.js 544KB
vue.global.js 511KB
vue.global.js 511KB
vue.esm-browser.js 480KB
vue.esm-browser.js 480KB
index.js 474KB
testServerConnection-CLJOcN3M.js 370KB
vue.runtime.global.js 349KB
vue.runtime.global.js 349KB
runtime-dom.global.js 349KB
browser.js 333KB
vue.runtime.esm-browser.js 324KB
vue.runtime.esm-browser.js 324KB
runtime-dom.esm-browser.js 324KB
index.js 305KB
xtermModule-BeNbaIVa.js 277KB
codeMirrorModule-70vzzmLw.js 251KB
codeMirrorModule-BfR9u_dG.js 251KB
runtime-core.esm-bundler.js 247KB
runtime-core.cjs.js 239KB
injectedScriptSource.js 237KB
server-renderer.esm-browser.js 229KB
build.js 222KB
compiler-dom.global.js 198KB
index.Q04MCqDO.js 192KB
compiler-core.cjs.js 191KB
index-C6zKCbkk.js 188KB
compiler-core.cjs.prod.js 187KB
runtime-core.cjs.prod.js 184KB
compiler-dom.esm-browser.js 182KB
validator.js 177KB
compiler-core.esm-bundler.js 166KB
vue-router.global.js 158KB
psl.js 158KB
vue.esm-browser.prod.js 146KB
vue.esm-browser.prod.js 146KB
vue-router.esm-browser.js 145KB
vue.global.prod.js 143KB
vue.global.prod.js 143KB
psl.min.js 134KB
convert.js 133KB
argparse.js 127KB
index.js 113KB
index.js 112KB
js-yaml.js 112KB
vi.YFlodzP_.js 112KB
index.js 104KB
index.js 103KB
he.js 99KB
index.xL8XjTLv.js 98KB
typebox.js 97KB
vue.runtime.esm-browser.prod.js 88KB
vue.runtime.esm-browser.prod.js 88KB
runtime-dom.esm-browser.prod.js 88KB
runtime-dom.global.prod.js 87KB
vue.runtime.global.prod.js 87KB
vue.runtime.global.prod.js 87KB
index.js 83KB
sw.bundle.js 83KB
compiler-dom.esm-browser.prod.js 78KB
compiler-dom.global.prod.js 77KB
diff_match_patch.js 76KB
consoleApiSource.js 75KB
saxes.js 72KB
frames.js 70KB
command.js 68KB
dom.js 65KB
server-renderer.esm-browser.prod.js 59KB
wkPage.js 55KB
recorderSource.js 51KB
crPage.js 51KB
zipBundleImpl.js 51KB
runtime-dom.esm-bundler.js 49KB
runtime-dom.cjs.js 47KB
index.js 47KB
cac.EdDItJD-.js 47KB
decode-data-html.js 47KB
decode-data-html.js 47KB
loader.js 46KB
compiler-ssr.cjs.js 43KB
runtime-dom.cjs.prod.js 43KB
magic-string.umd.js 41KB
source-map-consumer.js 41KB
js-yaml.min.js 39KB
crNetworkManager.js 38KB
共 2000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 20
资源评论
为风而战
- 粉丝: 486
- 资源: 70
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功