untyped
▶️ Check online playground
Usage
Install package
Install untyped
npm package:
yarn add untyped
npm i untyped
Define reference object
First we have to define a reference object that describes types, defaults and normalizer
const defaultPlanet = {
name: 'earth',
specs: {
gravity: {
$resolve: val => parseFloat(val),
$default: '9.8'
},
moons: {
$resolve: (val = ['moon']) => [].concat(val),
$schema: {
title: 'planet moons'
}
}
}
}
Resolving Schema
import { resolveSchema } from 'untyped'
const schema = resolveSchema(defaultPlanet)
Output:
{
"properties": {
"name": {
"type": "string",
"default": "earth"
},
"specs": {
"properties": {
"gravity": {
"default": 9.8,
"type": "number"
},
"moons": {
"title": "planet moons",
"default": [
"moon"
],
"type": "array",
"items": [
{
"type": "string"
}
]
}
},
"type": "object"
}
},
"type": "object"
}
Generating types
import { resolveSchema } from 'untyped'
const types = generateTypes(resolveSchema(defaultPlanet))
Output:
interface Untyped {
name: string,
specs: {
gravity: number,
moons: string[],
},
}
Contribution
- Clone repository
- Install dependencies with
yarn install
- Use
yarn dev
to start playground (work with src/
) - Use
yarn test
before push to ensure all tests and lint checks passing
License
MIT
Thanks to @dominikschreiber for donating package name.