README.md
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"
}
},"required": ["firstName", "lastName"]
}
Output:
exportinterfaceExampleSchema {
firstName:string;
lastName:string;/** * Age in years*/
age?:number;
hairColor?: ("black"|"brown"|"blue");
}
Installation
npm install json-schema-to-typescript --save
Usage
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 objectlet 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 | note |
---|---|---|
cwd | string | Root directory for resolving $ref s |
declareReferenced | boolean | Declare schemas referenced via $ref ? |
enableConstEnums | boolean | Prepend enums with const ? |
enableTrailingSemicolonForTypes | boolean | |
enableTrailingSemicolonForEnums | boolean | |
enableTrailingSemicolonForInterfaceProperties | boolean | |
enableTrailingSemicolonForInterfaces | boolean | |
indentWith | string | Tabs or spaces? |
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
Tests
npm test
Todo
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)