@dww/reasonably-typed

0.11.1-1 • Public • Published

  $ npm install --global reasonably-typed

Converts TypeScript and Flow definitions to Reason interfaces


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 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

Examples

TypeScript

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

$ retyped compile my-definition.d.ts

FlowTyped

ReasonablyTyped can automatically compile all FlowTyped definitions in your repo. Run

$ 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]

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

Status

CircleCI

Roadmap

  • [x] Basic types like string
  • [x] Function types
  • [x] Record types
  • [ ] Literals as types
  • [x] Union types
  • [ ] Instersection types
  • [x] Named types
  • [x] Optional parameters
  • [x] Classes
  • [x] Generics
  • [x] Built-ins like Promises
  • [ ] React components

Package Sidebar

Install

npm i @dww/reasonably-typed

Weekly Downloads

1

Version

0.11.1-1

License

MIT

Last publish

Collaborators

  • dww