Quantcast
Channel: Hacker News
Viewing all articles
Browse latest Browse all 25817

Show HN: JSONSchema to TypeScript compiler

$
0
0

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):

keytypenote
cwdstringRoot directory for resolving $refs
declareReferencedbooleanDeclare schemas referenced via $ref?
enableConstEnumsbooleanPrepend enums with const?
enableTrailingSemicolonForTypesboolean
enableTrailingSemicolonForEnumsboolean
enableTrailingSemicolonForInterfacePropertiesboolean
enableTrailingSemicolonForInterfacesboolean
indentWithstringTabs 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:

Further Reading


Viewing all articles
Browse latest Browse all 25817

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>