json-schema-to-typescript
Compile json schema to typescript typings
[In Beta]: Bug reports appreciated!
Example
Input:
Output:
Installation
npm install json-schema-to-typescript
or, to install the json-schema-to-typescript
CLI utility:
npm install -g json-schema-to-typescript
Usage
API
fs
CLI
$ json-schema-to-typescript src/foo.json
... snipped output here, on stdout ...
$ json-schema-to-typescript src/foo.json dist/foo.d.ts
$
See /example for a fully working demo.
Tests
npm test
Todo
-
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
-
anyOf
("union") -
allOf
("intersection") -
additionalProperties
of type -
extends
-
required
properties on objects (eg) -
validateRequired
(eg) - literal objects in enum (eg)
- referencing schema by id (eg)
- clean up + refactor code
Not expressible in TypeScript:
dependencies
(single, multiple)divisibleBy
(eg)format
(eg)multipleOf
(eg)maximum
(eg)minimum
(eg)maxItems
(eg)minItems
(eg)maxProperties
(eg)minProperties
(eg)not
/disallow
oneOf
("xor", useanyOf
instead)pattern
(string, regex)patternProperties
(eg)uniqueItems
(eg)
Further Reading
- JSON-schema spec: http://json-schema.org/latest/json-schema-core.html
- 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