tw-cli v0.6.0
š Using TypeScript is fun, but Flow is even better. The typing systems are similar, but the community is quickly supporting Flow for React. Take React Native for example, Flow is supported by default while TypeScript is a nightmare to configure (think /build dir, hot reloading, and concurrent typescript compilation separate from babel).
With this increase in open-source effort, many companies are doubling down on Flow (Facebook, Uber, etc.).
ā”ļø Tell TypeWriter which files you care about, and it will run a big list of codemods instantly!
ā ļø This is early stage software. There will be bugs. Please help improve it by using this and reporting issues ā ļø
š§ There is minor manual work after running TypeWriter. If you see room for improvement, create an issue!
Install
$ npm install --global tw-cliUsage
$ typewriter src
ā Converted src/index.ts -> src/index.js
ā Converted src/App.tsx -> src/App.jsxCodemods Included
- Rename files from
.ts->.js&.tsx->.jsx
a.ts -> a.js
a.tsx -> a.jsx- Add flow keyword quote (
// @flow)
"content" -> "// @flow\ncontent"- Remove
publicandprivatekeywords
"public render()" -> "render()"interface->type
"interface Prop {}" -> "type Prop = {}"- Type imports
- ensure your types are in
types, `types/,interface/, orinterfaces/`*
// imports from types change
// "import {Prop} from './types'" -> "import type {Prop} from './types'"
// imports from everywhere else are left alone
// "import {NotProp} from './not-types'" -> "import {NotProp} from './not-types'"- Remove
readonly
Before:
{
readonly color: string
}After:
{
color: string
}JSX.Element->React.Node
In prop typings for TypeScript, a react element is called JSX.Element while in Flow this is React.Node.
Before:
{
element: JSX.Element;
}After:
{
element: React.Node;
}More Help
$ typewriter --help
TypeScript -> Flow Converter
Usage
$ typewriter <path|glob> [...]
Examples
$ typewriter index.ts
ā Converted index.ts -> index.js
$ typewriter src
ā Converted src/index.ts -> src/index.js
ā Converted src/App.tsx -> src/App.jsx
# ignore node_modules
$ typewriter * '!node_modules/*'
ā Converted src/index.ts -> src/index.js
ā Converted src/App.tsx -> src/App.jsx
ā Converted index.ts -> index.jsSupport Development
The work done for this project is free. If you save time with TypeWriter, consider making a donation.
Are Bitcoin (BTC) donations more your style?
14xAeqDucUpRZkSDQrHCXaKsWmNPeqaB5q
License
MIT Ā© Dawson Botsford