Typeri
TypeScript type generation from Peri schemas.
Find documentation at HexDocs
Installation
Add typeri to your list of dependencies in mix.exs:
def deps do
[
{:typeri, "~> 0.1.0"}
]
endUsage
To use a generator and get types from Domain.Management.Messages module you will need to configure typeri in config.exs like so:
config :typeri,
modules: [Domain.Management.Messages], # list of modules which contain `use Typeri.Generator`
output: "typescript", # directory where you want to output files, can also be :stdout
file_names: :kebab_case, # preferred casing of output files, can also be :snake_case, :pascal_case, :camel_case
file_structure: :nested # do you want module names to dictate directory names in output, if you want all the modules in one directory, use :flat
Then in the module Domain.Management.Messages use Typeri.Generator
defmodule Domain.Management.Messages do
import Peri
use Typeri.Generator,
types: [
:add_user,
:delete_user
]
defschema :add_user, {:required, [
name: {:required, :string}
]}
defschema :delete_user, {:required, [
id: {:required, :string}
]}
endAnd then run:
mix typeri.gen
It will generate a file typescript/domain/management/messages.ts with the following content
export type AddUser = { name: string };
export type DeleteUser = { id: string };