1.1.1 • Published 4 months ago

jsoncodegen-generator-typescript v1.1.1

Weekly downloads
2
License
MIT
Repository
github
Last release
4 months ago

jsoncodegen-generator-typescript

jsoncodegen JSON to TypeScript code generator.

Generates TypeScript interfaces from jsoncodegen interfaces. Enums are converted to TypeScript enums.

Output directories

__type__

Contains all the interfaces & enums.

__factory__

Contains factory functions for each interface. It is recommended to use these factory functions to create instances of each interface, because they can fill in some properties automatically and also ensure strict type checks.

Factory functions can be called like this:

const myObject = makeMyObject({
  name: 'Budapest',
  flag: true,
  count: 3,
})

__union_type__

Contains TypeScript union types that can be very useful when you need to identify a type based on a property.

This folder is only generated if you have at least one interface that has an enum value property.

Let's say you have multiple city interfaces defined like this:

Budapest.json

{
  ".is": "interface",
  ".description": "The city of Budapest.",

  "cityId": "./CityID.Budapest"
}

And you have a CityID enum defined like this:

CityID.json

{
  ".is": "enum",
  ".description": "City IDs.",

  "Boston": "Boston",
  "Budapest": "Budapest"
}

The __union_type__ folder will contain THas_cityId.ts, and you can use it like this:

function workWithCity(city: THas_cityId) {
  switch (city.cityId) {
    case CityID.Boston:
      // city is now an instance of the Boston interface
      break
    case CityID.Budapest:
      // city is now an instance of the Budapest interface
      break
  }
}

__assert__

Contains assertion functions. These functions validate an object and throw an __assert_utility__/AssertionError if the given object does not match the interface. They can be called like this:

const myObject = getMyObjectFromSomewhere()
try {
  assertMyObject(myObject)
  // myObject is now an instance of the MyObject interface
} catch (e) {
  if (e instanceof AssertionError) {
    // e.message indicates where the problem is
  }
}

__assert_utility__

Contains functions and classes used by assertions in the __assert__ folder.

Install

npm i -D jsoncodegen-generator-typescript

Config

Configuration can be put in jsoncodegen-generator-typescript.config.js and passed to jsoncodegen in the config parameter:

jsoncodegen --generator typescript --config jsoncodegen-generator-typescript.config.js ...

jsoncodegen-generator-java-jackson.config.js

export default {
	isMutable: false,
	importFileExtension: '',
}

isMutable?: boolean

If true, emitted interface properties, arrays and maps will not be readonly.

importFileExtension?: string

Use a string like '.js' to append that file extension to each generated import declaration. If unspecified, the default is no file extensions.

License

MIT

History

1.1.0 require → import & importFileExtension support

1.0.0 Initial version.

1.1.1

4 months ago

1.1.0

4 months ago

1.0.4

1 year ago

1.0.3

4 years ago

1.0.2

4 years ago

1.0.1

4 years ago

1.0.0

4 years ago