Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/rrdelaney/reasonablytyped

:diamond_shape_with_a_dot_inside: Converts Flow and TypeScript definitions to Reason interfaces
https://github.com/rrdelaney/reasonablytyped

bucklescript bucklescript-bindings flowtype reasonml typescript

Last synced: 1 day ago
JSON representation

:diamond_shape_with_a_dot_inside: Converts Flow and TypeScript definitions to Reason interfaces

Awesome Lists containing this project

README

        


$ 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

```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;
}
}
```

Run retyped


$ retyped class.js

Get Reason

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

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

## Development

See [DEVELOPING](DEVELOPING.md) and [CONTRIBUTING](CONTRIBUTING.md).

## Status

[![CircleCI](https://circleci.com/gh/rrdelaney/ReasonablyTyped.svg?style=svg)](https://circleci.com/gh/rrdelaney/ReasonablyTyped)