json-schema-to-typescript

Compile JSONSchema to TypeScript typings

Github星跟踪图

json-schema-to-typescript Build Status npm mit

Compile json schema to typescript typings

Example

Input:

{
  "title": "Example Schema",
  "type": "object",
  "properties": {
    "firstName": {
      "type": "string"
    },
    "lastName": {
      "type": "string"
    },
    "age": {
      "description": "Age in years",
      "type": "integer",
      "minimum": 0
    },
    "hairColor": {
      "enum": ["black", "brown", "blue"],
      "type": "string"
    }
  },
  "additionalProperties": false,
  "required": ["firstName", "lastName"]
}

Output:

export interface ExampleSchema {
  firstName: string;
  lastName: string;
  /**
   * Age in years
   */
  age?: number;
  hairColor?: "black", "brown", "blue";
}

Installation

# Using Yarn:
yarn add json-schema-to-typescript

# Or, using NPM:
npm install json-schema-to-typescript --save

Usage

import { compile, compileFromFile } from 'json-schema-to-typescript'

// compile from file
compileFromFile('foo.json')
  .then(ts => fs.writeFileSync('foo.d.ts', ts))

// or, compile a JS object
let mySchema = {
  properties: [...]
}
compile(mySchema, 'MySchema')
  .then(ts => ...)

See server demo and browser demo for full examples.

Options

compileFromFile and compile accept options as their last argument (all keys are optional):, key, type, default, description, -, -, -, -, bannerComment, string, "/* tslint:disable */\n/**\n* This file was automatically generated by json-schema-to-typescript.\n* DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,\n* and run json-schema-to-typescript to regenerate this file.\n*/", Disclaimer comment prepended to the top of each generated file, cwd, string, process.cwd(), Root directory for resolving $refs, declareExternallyReferenced, boolean, true, Declare external schemas referenced via $ref?, enableConstEnums, boolean, true, Prepend enums with const?, style, object, { bracketSpacing: false, printWidth: 120, semi: true, singleQuote: false, tabWidth: 2, trailingComma: 'none', useTabs: false }, A Prettier configuration, unreachableDefinitions, boolean, false, Generates code for definitions that aren't referenced by the schema., strictIndexSignatures, boolean, false, Append all index signatures with , undefined so that they are strictly typed., $refOptions, object, {}, $RefParser Options, used when resolving $refs, ## CLI

A simple CLI utility is provided with this package.

cat foo.json, json2ts > foo.d.ts
# or
json2ts foo.json > foo.d.ts
# or
json2ts foo.json foo.d.ts
# or
json2ts --input foo.json --output foo.d.ts
# or
json2ts -i foo.json -o foo.d.ts

You can pass any of the options described above (including style options) as CLI flags. Boolean values can be set to false using the no- prefix.

# generate code for definitions that aren't referenced
json2ts -i foo.json -o foo.d.ts --unreachableDefinitions
# use single quotes and disable trailing semicolons
json2ts -i foo.json -o foo.d.ts --style.singleQuote --no-style.semi

Tests

npm test

Features

  • title => interface
  • Primitive types:
    • array
    • homogeneous array
    • boolean
    • integer
    • number
    • null
    • object
    • string
    • homogeneous enum
    • heterogeneous enum
  • Non/extensible interfaces
  • Custom JSON-schema extensions
  • Nested properties
  • Schema definitions
  • Schema references
  • Local (filesystem) schema references
  • External (network) schema references
  • Add support for running in browser
  • default interface name
  • infer unnamed interface name from filename
  • allOf ("intersection")
  • anyOf ("union")
  • oneOf (treated like anyOf)
  • maxItems (eg)
  • minItems (eg)
  • additionalProperties of type
  • patternProperties (partial support)
  • extends
  • required properties on objects (eg)
  • validateRequired (eg)
  • literal objects in enum (eg)
  • referencing schema by id (eg)
  • custom typescript types via tsType

Not expressible in TypeScript:

Further Reading

Projects That Use JSON-Schema-to-TypeScript

主要指标

概览
名称与所有者bcherny/json-schema-to-typescript
主编程语言TypeScript
编程语言TypeScript (语言数: 2)
平台
许可证MIT License
所有者活动
创建于2016-03-22 03:56:58
推送于2025-06-19 16:32:19
最后一次提交2025-05-19 09:31:39
发布数3
最新版本名称v1.2.2 (发布于 )
第一版名称v0.1.0 (发布于 )
用户参与
星数3.1k
关注者数18
派生数409
提交数593
已启用问题?
问题数423
打开的问题数148
拉请求数98
打开的拉请求数21
关闭的拉请求数114
项目设置
已启用Wiki?
已存档?
是复刻?
已锁定?
是镜像?
是私有?