untyped
安装
untyped
# npm
npm install untyped
# yarn
yarn add untyped
# pnpm
pnpm install untyped
# bun
bun install untyped
# deno
deno install untyped ">
# Auto-detect npx nypm install untyped # npm npm install untyped # yarn yarn add untyped # pnpm pnpm install untyped # bun bun install untyped # deno deno install untyped
用法
首先,我们必须定义一个描述类型,默认值和$resolve方法(normalizer)的参考对象。
const defaultPlanet = {
name : "earth" ,
specs : {
gravity : {
$resolve : ( val ) => Number . parseFloat ( val ) ,
$default : "9.8" ,
} ,
moons : {
$resolve : ( val = [ "moon" ] ) => [ val ] . flat ( ) ,
$schema : {
title : "planet moons" ,
} ,
} ,
} ,
} ; API
resolveSchema
untyped";
const schema = await resolveSchema(defaultPlanet);">
import { resolveSchema } from " untyped " ; const schema = await resolveSchema ( defaultPlanet ) ;
输出:
{
"properties" : {
"name" : {
"type" : " string " ,
"default" : " earth "
},
"specs" : {
"properties" : {
"gravity" : {
"default" : 9.8 ,
"type" : " number "
},
"moons" : {
"title" : " planet moons " ,
"default" : [ " moon " ],
"type" : " array " ,
"items" : [
{
"type" : " string "
}
]
}
},
"type" : " object "
}
},
"type" : " object "
} generateTypes
untyped";
const types = generateTypes(await resolveSchema(defaultPlanet));">
import { resolveSchema , generateTypes } from " untyped " ; const types = generateTypes ( await resolveSchema ( defaultPlanet ) ) ;
输出:
untyped {
/** @default "earth" */
name: string;
specs: {
/** @default 9.8 */
gravity: number;
/**
* planet moons
* @default ["moon"]
*/
moons: string[];
};
}">
interface untyped { /** @default "earth" */ name : string ; specs : { /** @default 9.8 */ gravity : number ; /** * planet moons * @default ["moon"] */ moons : string [ ] ; } ; }
generateMarkdown
untyped";
const markdown = generateMarkdown(await resolveSchema(defaultPlanet));">
import { resolveSchema , generateMarkdown } from " untyped " ; const markdown = generateMarkdown ( await resolveSchema ( defaultPlanet ) ) ;
输出:
# ` name `
- ** Type ** : ` string `
- ** Default ** : ` "earth" `
# ` specs `
## ` gravity `
- ** Type ** : ` number `
- ** Default ** : ` 9.8 `
## ` moons `
- ** Type ** : ` array `
- ** Default ** : ` ["moon"] ` 发展
- 克隆这个存储库
- 使用
corepack enableCorePack(使用npm i -g corepackfor Node.js <16.10) - 使用
pnpm install - 使用
pnpm dev运行交互式测试 - 使用
pnpm web启动操场网站 - 推送前使用
pnpm test以确保所有测试和棉绒检查通过
执照
麻省理工学院
感谢@dominikschreiber捐赠包装名称。
下载源码
通过命令行克隆项目:
git clone https://github.com/unjs/untyped.git