![見出し画像](https://assets.st-note.com/production/uploads/images/77103454/rectangle_large_type_2_7beaecff06498a00b910e4628c8cd264.jpeg?width=1200)
TypeScript 入門の記録(14)三目並べを作ってみる(その6)
前回進捗がなかった三目並べですが、各マス目の表示用が関数のままだと、Boardコンポーネントが管理する各メス目の値と、マス目のクリックイベントハンドラを思うように受け渡しができず行き詰まっていました。React もTypeScriptも両方初学者なので、理解できるところから手をつけることにします。
TICTACButton関数をSquareクラスに置き換えてみる
TICTACButtonを表示に使用していた箇所を、Reactチュートリアルの三目並べの Square クラスと置き換えてみます。
三目並べのSquareクラスを追加してみる
Boardのマス目の表示を、TICTACButtonから、Squareに修正します。
![](https://assets.st-note.com/img/1650792553966-5Vi0XtTid3.png?width=1200)
Reactチュートリアルの三目並べのコードからSquareクラスをコピーしてきます。
![](https://assets.st-note.com/img/1650790236869-HQ3SvTko6J.png?width=1200)
そのままでは、Boardから受け取るプロパティが定義されていないので、onClick関数とvaueが使用できません。そこで、SquareクラスにインターフェースButtonPropsを追加します。
![](https://assets.st-note.com/img/1650790769389-NUJhuhScpj.png?width=1200)
今度は、Reactチュートリアルのときは引数指定なしだったマウスクリックのハンドラ関数の引数が必要であることが警告されました。
![](https://assets.st-note.com/img/1650790665534-3GM89AbOyx.png?width=1200)
パラメータを追加します。
![](https://assets.st-note.com/img/1650791264506-aAyOXA1xua.png?width=1200)
Boardのプロパティ定義を追加する
まだ、Boardコンポーネントに、プロパティ未定義のエラーがあるので、こちらを解決していきます。
![](https://assets.st-note.com/img/1650791509262-Rjc7mqA4Dv.png?width=1200)
Boardのコンストラクタには、プロパティの設定が必要なので、ここにコンストラクタに渡すプロパティの初期値を指定します。
![](https://assets.st-note.com/img/1650792316981-6BGhU69lIf.png?width=1200)
実行してみる
ここで、yarn start します。
![](https://assets.st-note.com/img/1650792822116-rFVYyNfqfQ.png?width=1200)
ブラウザ表示もOKです。
![](https://assets.st-note.com/img/1650792943703-qdYpdOa4sU.png?width=1200)
マス目をクリックしてみます。
![](https://assets.st-note.com/img/1650793021784-nF2D8GPSpU.png?width=1200)
クリックしたマスに'X'が表示されました。成功です!次回は、Next player をXとOがクリックするたびに切り替わるように修正したいと思います。今週は、ここまで。続きは次の週末の予定です。
この記事が気に入ったらサポートをしてみませんか?