JSからの移行
自動JSからTSへの変換
- TypeStat (Codecademyで使用)
- TypeWiz
- js-to-ts-converter
- TS-migrate は Airbnbの変換で使用されています。
- dts-gen - dts-genは、任意のJavaScriptオブジェクトからTypeScript定義ファイル(.d.ts)を生成するツールです。
JSON用 - http://json2ts.com/ はJSONからTypeScriptインターフェースを生成します。
手動によるJSからTSへの変換
「単純な名前変更」戦略
- OSX/Linux: find src -name "*.js" -exec sh -c 'mv "$0" "${0%.js}.tsx"' {} \;
TypeScriptファイルはWebpackで読み込むか、tscコンパイラを使用してTSファイルをJSファイルと並行してコンパイルできます。基本的なtsconfig.jsonは次のとおりです。
{
  "compilerOptions": {
    "allowJs": true
  }
}
次に、JSファイルのチェックを有効にする必要があります。
{
  "compilerOptions": {
    "allowJs": true,
    "checkJs": true
  }
}
コードベースが大きく、一度に多くのエラーが発生する場合は、//@ts-nocheckを使用して問題のあるファイルを無効にするか、checkJsをオフにして、各通常のJSファイルの先頭に//@ts-checkディレクティブを追加します。
TypeScriptはここでいくつかの重大なエラーを報告し、それらは簡単に修正できるはずです。
完了したら、暗黙的なanyをオフにすることで、より厳格なチェックを有効にします。
{
  "compilerOptions": {
    "allowJs": true,
    "checkJs": true,
    "noImplicitAny": true // or "strict": true
  }
}
これにより、多くの型エラーが発生し、ファイルをTSに変換するか、(オプションで)JSにJSDocアノテーションを使用できるようになります。
ここでは、anyに対して環境型TODO型エイリアスを使用し、戻ってくる必要があるものを追跡する一般的な方法があります。
type TODO_TYPEME = any;
export function myFunc(foo: TODO_TYPEME, bar: TODO_TYPEME): number {
  // ...
}
noImplicitThis、strictNullChecksなど、より多くのstrictモードフラグを徐々に追加して、最終的には厳格モードでJSファイルを残さずに実行できるようにします。
{
  "compilerOptions": {
    "strict": true
  }
}
3ステッププロセス

https://speakerdeck.com/amhinson/convert-a-react-native-project-to-typescript-in-10-minutes?slide=23
その他のリソース
- 大規模なTypeScriptの採用 - Airbnbの変換事例と戦略 - それらのts-migrateツールはこちら
- BloombergからのTypeScriptスケーリングの教訓
- create-react-app/- react-scriptsアプリのTypeScriptへの移行 -- react-scripts-tsを使用しないでください。
- EJECTされたCRAアプリのTSへの移行
- LyftのJSからTSへの移行ツール(PropTypesの移行を含む)
- Hootsuite
- EtsyのTypeScriptへの移行
- Storybookの移行(PR)
- 20万行以上のプロジェクトをTypeScriptに移行し、その経験を語る - Coherent Labs - grunt-ts、jQuery、Kendo UIを使用
- 厳格なnullチェックの段階的な追加 https://vscode.dokyumento.jp/blogs/2019/05/23/strict-null
古いコンテンツ(古くなっている可能性があります)