json-to-typing

Transform json data to Typescript type elements. If do not use Typescript and need to cover type of json data, this tool will be helpfuly for you. You can also use in terminal to automate the transfom process as cli command.

Usage no npm install needed!

<script type="module">
  import jsonToTyping from 'https://cdn.skypack.dev/json-to-typing';
</script>

README

json-to-typing

NPM version Build Status Coverage Status Conventional Commits Standard Version

Transform json data to Typescript type elements. If do not use Typescript and need to cover type of json data, this tool will be helpfuly for you. You can also use in terminal to automate the transfom process as cli command.

Install

Npm:

$ npm i json-to-typing --save

Yarn:

$ yarn add json-to-typing

Examples:

Basic

import jsonToTyping from 'json-to-typing';

jsonToTyping('{"name": "John", "age": 30, "isActive": true}');

Result:

{
  name: string;
  age: number;
  isActive: boolean;
}

Nested

{
  "name": "John",
  "age": 30,
  "isActive": true,
  "books": ["Book 1", "Book 2", "Book 3"],
  "movies": {
    "genres": ["sci-fi", "comedy", "fantastic"],
    "favorite": "The Lord Of The Rings"
  }
}
jsonToTyping(nested);

Result:

{
  name: string;
  age: number;
  isActive: boolean;
  books: [string, string, string];
  movies: {
    genres: [string, string, string];
    favorite: string;
  }
}

CLI

Install Globally

$ npm i -g json-to-typing
$ json2typing --help

Run locally

$ node_modules/.bin/json2typing --help

Run with npx

$ npx json2typing --help

Examples

Basic:

$ json2typing --source '{"name": "John"}'

output:

{
  name: string;
}

Interface Example:

$ json2typing interface IUser --source '{"name": "John"}'

output:

interface IUser {
  name: string;
}

Note: You can use --export flag to add export keyword.

$ json2typing interface IUser --source '{"name": "John"}' --export

output:

export interface IUser {
  name: string;
}

Typing types

Name
interface
declare
type

Flags

Name Description
--source JSON string or json file path
--export Add export keyword
--help Show help menu

Use in CMD Pipeline

$ echo '{"name": "John"}' | json2typing type Member --export

output:

export type Member {
  name: string;
}

Another:

$ cat ./package.json | json2typing declare Package --export

output:

export declare const Package: {
  version: string;
  license: string;
  main: string;
  typings: string;
  bin: {
    json2typing: string;
  };
  files: [string, string];
  engines: {
    node: string;
  };
  scripts: {
    start: string;
    build: string;
  };
  peerDependencies: {};
  husky: {
    hooks: {
      'pre-commit': string;
      'commit-msg': string;
    };
  };
  prettier: {
    printWidth: number;
    semi: boolean;
    singleQuote: boolean;
    trailingComma: string;
  };
  name: string;
  author: string;
  module: string;
  devDependencies: {
    husky: string;
  };
  dependencies: {};
};

Tests

$ npm test

Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

License

MIT