Converts flow definitions to Bucklescript definitions
npm install reasonably-typed
$ npm install --global reasonably-typed
``js
// 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;
}
}
`
$ retyped class.js
`reason
/ Module classes /
type state = {. "id": float, "storeName": string };
module Store = {
type t = {. "state": (state), "update": @bs.meth};
[@bs.new] [@bs.module "classes"] external make : state => t = "Store";
};
`
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:
`js
// 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
See DEVELOPING and CONTRIBUTING.
