Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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
- Host: GitHub
- URL: https://github.com/rrdelaney/reasonablytyped
- Owner: rrdelaney
- License: mit
- Created: 2017-04-25T04:26:55.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2018-08-02T07:37:11.000Z (over 6 years ago)
- Last Synced: 2024-10-30T06:58:29.593Z (15 days ago)
- Topics: bucklescript, bucklescript-bindings, flowtype, reasonml, typescript
- Language: OCaml
- Homepage: https://rrdelaney.github.io/ReasonablyTyped/
- Size: 11.7 MB
- Stars: 518
- Watchers: 21
- Forks: 24
- Open Issues: 12
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
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.jsGet 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
TypeScriptTypeScript has a similar workflow. Compile your TypeScript file with:
```
$ retyped my-definition.d.ts
```
Command-line Usage```
Usage:
$ retyped ...filesExamples:
$ 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)