$ npm install --global reasonably-typed
Converts TypeScript and Flow definitions to Reason interfaces
Take your Flow or TypeScript definition
// class.jsdeclare module 'classes' declare type State = id: number storeName: string ; declare : Store; state: State; update(nextState: State): void; }
Run retyped
$ retyped compile class.js
Get Reason
/* Module classes */ type state = Js.t {. id : float, storeName : string}; module Store = { type t = Js.t {. state : state, update : (state => unit) [@bs.meth]}; external make : state => t = "Store" [@@bs.new] [@@bs.module "classes"];};
Docs
TypeScript has a similar workflow. Compile your TypeScript file with:TypeScript
$ retyped compile my-definition.d.ts
ReasonablyTyped can automatically compile all FlowTyped definitions in your repo. RunFlowTyped
$ retyped compile --flow-typed
Command-line Usage
retyped
Commands:
compile [files...] Generate BuckleScript interfaces from a file
Options:
--version Show version number [boolean]
--help Show help [boolean]
Formats a block of code using Compiles a libdef, formats the result, and handles errors cleanlyUsage as a library
ReasonablyTyped also exports a library for use! See the example below:
format (code: string) => string
refmt
compile (code: string, filename?: string) => string
Status
Roadmap
- Basic types like
string
- Function types
- Record types
- Literals as types
- Union types
- Instersection types
- Named types
- Optional parameters
- Classes
- Generics
- Built-ins like Promises
- React components