start with creating a new branch
git checkout -b "moving-from-flow-to-ts"
  
  
  Rename files from js to ts[x]
Lets start with renaming all .js files to .ts with the following command:
ls ./src/**/*.js | 
    while read line; do git mv -- $line ${line%.js}.ts; done;
Then, assuming all files importing react are jsx files, rename them from .ts to .tsx
find ./src -type f -name "*.ts" |
    xargs grep 'import React[ ,]' |
    cut -d: -f1 |
    uniq | 
    while read line; do git mv -- $line ${line%.ts}.tsx; done;
Commit to save the new file names
git commit -m "rename js files to ts and tsx"
Move to typescript
Remove flow-bin from package.json
npm uninstall flow-bin
Then, install and initialize typescript
npm install --save-dev typescript @types/react @types/react-dom && tsc --init
Note: If you use decorators, enable the experimentalDecorators flag in tsconfig.json before running the next step
Commit to save the changes
git commit -m "replace flow with typescript"
Convert all flow types to typescript types
Fix types in all tsx files
npx flow-to-ts --inline-utility-types --write -o tsx ./src/**/*.tsx
Fix types in all ts files
npx flow-to-ts --inline-utility-types --write -o ts ./src/**/*.ts
Next step
Run tsc --noEmit to see compilation errors, and fix them manually
    
Top comments (1)
Hi, thanks for the post. For future use pls modify it to include @khan/flow-to-ts as original flow-to-ts has been deprecated.