メインコンテンツへスキップ

JSからの移行

自動JSから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 {
// ...
}

noImplicitThisstrictNullChecksなど、より多くのstrictモードフラグを徐々に追加して、最終的には厳格モードでJSファイルを残さずに実行できるようにします。

{
"compilerOptions": {
"strict": true
}
}

3ステッププロセス

image

https://speakerdeck.com/amhinson/convert-a-react-native-project-to-typescript-in-10-minutes?slide=23

その他のリソース

古いコンテンツ(古くなっている可能性があります)