@dww/reasonably-typed
v0.11.1-1
Published
Converts flow definitions to Bucklescript definitions
Downloads
6
Readme
// 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;
}
}
/* 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:
$ retyped compile my-definition.d.ts
ReasonablyTyped can automatically compile all FlowTyped definitions in your repo. Run
$ retyped compile --flow-typed
retyped
Commands:
compile [files...] Generate BuckleScript interfaces from a file
Options:
--version Show version number [boolean]
--help Show help [boolean]
// 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
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