forked frombcherny/json-schema-to-typescript
- Notifications
You must be signed in to change notification settings - Fork1
Compile JSONSchema to TypeScript type declarations
NotificationsYou must be signed in to change notification settings
CappasityInc/json-schema-to-typescript
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
Compile json schema to typescript typings
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:
exportinterfaceExampleSchema{firstName:string;lastName:string;/** * Age in years */age?:number;hairColor?:"black"|"brown"|"blue";}
# Using Yarn:yarn add json-schema-to-typescript# Or, using NPM:npm install json-schema-to-typescript --save
import{compile,compileFromFile}from'json-schema-to-typescript'// compile from filecompileFromFile('foo.json').then(ts=>fs.writeFileSync('foo.d.ts',ts))// or, compile a JS objectletmySchema={properties:[...]}compile(mySchema,'MySchema').then(ts=> ...)
Seeserver demo andbrowser demo for full examples.
compileFromFile andcompile 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 withconst? |
| style | object | { bracketSpacing: false, printWidth: 120, semi: true, singleQuote: false, tabWidth: 2, trailingComma: 'none', useTabs: false } | APrettier configuration |
| unreachableDefinitions | boolean | false | Generates code fordefinitions that aren't referenced by the schema. |
| strictIndexSignatures | boolean | false | Append all index signatures with ` |
| $refOptions | object | {} | $RefParser Options, used when resolving$refs |
A simple CLI utility is provided with this package.
cat foo.json| json2ts> foo.d.ts# orjson2ts foo.json> foo.d.ts# orjson2ts foo.json foo.d.ts# orjson2ts foo.json --output foo.d.ts# orjson2ts -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 theno- prefix.
# generate code for definitions that aren't referencedjson2ts -i foo.json -o foo.d.ts --unreachableDefinitions# use single quotes and disable trailing semicolonsjson2ts -i foo.json -o foo.d.ts --style.singleQuote --no-style.semi
npm test
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 likeanyOf)maxItems(eg)minItems(eg)additionalPropertiesof typepatternProperties(partial support)extendsrequiredproperties on objects (eg)validateRequired(eg)- literal objects in enum (eg)
- referencing schema by id (eg)
- custom typescript types via
tsType
dependencies(single,multiple)divisibleBy(eg)format(eg)multipleOf(eg)maximum(eg)minimum(eg)maxProperties(eg)minProperties(eg)not/disallowoneOf("xor", useanyOfinstead)pattern(string,regex)uniqueItems(eg)
- JSON-schema spec:https://tools.ietf.org/html/draft-zyp-json-schema-04
- JSON-schema wiki:https://github.com/json-schema/json-schema/wiki
- JSON-schema test suite:https://github.com/json-schema/JSON-Schema-Test-Suite/blob/node
- TypeScript spec:https://github.com/Microsoft/TypeScript/blob/master/doc/spec.md
About
Compile JSONSchema to TypeScript type declarations
Resources
Contributing
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
No packages published
Uh oh!
There was an error while loading.Please reload this page.
Languages
- TypeScript99.6%
- JavaScript0.4%