Skip to content

rrdelaney/ReasonablyTyped

 $ npm install --global reasonably-typed 

Converts TypeScript and Flow definitions to Reason interfaces
(Also maybe TypeScript definitions to Flow)


Take your Flow or TypeScript definition

// class.js declare module 'classes' { declare type State = { id: number, storeName: string, } declare export class Store { constructor(initialState: State): Store; state: State; update(nextState: State): void; } }

Run retyped

$ retyped class.js 

Get Reason

/* Module classes */ type state = {. "id": float, "storeName": string }; module Store = { type t = {. "state": (state), "update": [@bs.meth](state => unit)}; [@bs.new] [@bs.module "classes"] external make : state => t = "Store"; };

Docs

Examples

TypeScript

TypeScript has a similar workflow. Compile your TypeScript file with:

$ retyped my-definition.d.ts 

Command-line Usage
Usage: $ retyped ...files Examples: $ retyped file1.js file2.js file3.d.ts [boolean] 

Usage as a library ReasonablyTyped also exports a library for use! See the example below:
// lib-usage.js import * as ReasonablyTyped from 'reasonably-typed' const libSrc = fs.readFileSync('lib.js').toString() const bsInterface = ReasonablyTyped.compile(libSrc)

format (code: string) => string

Formats a block of code using refmt

compile (code: string, filename?: string) => string

Compiles a libdef, formats the result, and handles errors cleanly

Development

See DEVELOPING and CONTRIBUTING.

Status

CircleCI

About

💠 Converts Flow and TypeScript definitions to Reason interfaces

Topics

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Packages

No packages published

Contributors 9