Elsaの技術日記(徒然なるままに)

主に自分で作ったアプリとかの報告・日記を記載

MENU

Reactで作成したコードをTypeScriptに変換

去年、Reactでいくつかアプリを作成してみました。
こちらのWebアプリケーションをtypescriptに置き換えることでtypescriptの勉強が行えないかと思いたち、
既存のReactで生成したコードをtypescriptに置き換えてみることにしました。

今回は、typescriptに置き換えるにあたり環境構築方法についてまとめておきたいと思います!!



■TypeScript環境をインストール

まずTypeScriptを用いるための環境が必要になるのでこちらをインストールしていきます。
コマンドはこちら。

npm install --save typescript @types/node @types/react @types/react-dom @types/jest

エラー等が発生しなければOK。
これでインストールは完了です。

■TypeScriptコンパイル環境準備

次にTypeScriptで記載されたコードをコンパイルするための設定ファイルを作成していきます。
っと言ってもコンパイル実行に必要なファイルである、
tsconfig.json
は、
npm start

npm build
などを実行すると自動生成されます。
このため、TypeScriptを明示的に使用する旨をconfigファイルに追記するのみでOKになります。
追加・編集が必要なファイルはありませんでした。

追加・編集せずにtypescriptが導入できるのは楽で便利ですね。

■既存ファイルをTypeScriptに置き換える

では実際に既存の.jsファイルをTypeScriptに変換していきます。

変換手順は、
①自分が作成した.jsファイルの拡張子を.tsxに書き換えます。
②TypeScript用に型指定などを行っていく
になります。

②ですが、vscode
TypeScriptの拡張機能を用いるとエラーを教えてもらえるのでとても便利。
自分は、
JavaScript and TypeScript Nightly
をインストールして、エラー検知や修正案を教えてもらっています。

②で型指定等々はTypeScriptの構文・文法に沿って実施してもらえればOK。
documentインターフェースの型指定だけちょっと迷ってしまったので備忘録として残しておきます。

まずdocumentインターフェースの型指定方法ですが、
javascriptにて、

const TurnMessage = document.getElementById("TurnId");

と記載していたとします。
このコードをTypeScriptに置き換える場合には、

const TurnMessage = document.getElementById("TurnId") as HTMLElement;

と型アサーションを付与することで解決できます。

【型アサーションとは?】
型定義の上書き機能とのこと。
TypeScriptでは、推論・分析により得た型を任意の方法で上書きでき、これを型アサーションと呼ばれるメカニズムによって実行しているとのこと。
※参照
typescript-jp.gitbook.io

ただし、型アサーションは実行途中で無理やり型を指定・変換する行為になりますので多用はしない方がよい(出来る限り使用は避けた方がよい)です。
自分も、documentインターフェースにのみ適用してコードを作成してみました。

■TypeScriptへ変換したコードを動かしてみる

コードをTypeScriptに置き換え終わったら、今まで通り、

npm start
もしくは
yarn start

を実行すればTypeScriptのコンパイルが実行され、内部的にjavascriptに変換されます。
後はWebブラウザ上で、

http://ipアドレス:3000

のようにアクセスすれば作成したアプリが表示されるかと思います。

■作品紹介

去年作成した〇×ゲームとモグラたたきをtypescriptに置き換えてみました。
コードはgithubに上げておりますのでよろしかったが参考にしてください。
github.com
github.com

■最後に

今回はReactで作成したコードをTypeScriptに変換してみました。
どうしても型アサーションに頼ってしまっている部分があるので、こちらは見直し!!
解決出来たらまたブログに載せたいと思います!!