untyped

Delphi源码 2025-08-08

untyped

▶q检查在线操场

安装

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 enable CorePack(使用npm i -g corepack for Node.js <16.10)
  • 使用pnpm install
  • 使用pnpm dev运行交互式测试
  • 使用pnpm web启动操场网站
  • 推送前使用pnpm test以确保所有测试和棉绒检查通过

执照

麻省理工学院

感谢@dominikschreiber捐赠包装名称。

下载源码

通过命令行克隆项目:

git clone https://github.com/unjs/untyped.git