Skip to content

rrdelaney/ReasonablyTyped

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
2
 
 
 
 
 
 
lib
 
 
src
 
 
 
 
 
 
 
 
 
 
 
 

  $ 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