Vue.js+TypeScript環境で”TypeError: Cannot read property ” of undefined”

今回はVue.js+TypeScript環境でデータを取得する前に画面がレンダリングされて「”TypeError: Cannot read property ” of undefined”」というエラーが出てしまう問題の解決策をご紹介したいと思います。



Vue.js+TypeScript環境で”TypeError: Cannot read property ” of undefined”

一般的にVue.jsではdataを入れる際に

のように書けば良いですが、TypeScriptの場合は

と階層構造で配列を定義できません。(本当はできるのかもしれませんが、私はその方法を知りません。)

例えば、template上で
testList[0].testItem
のようにdataにある値を出力した場合、createdやmountedなどどんなライフサイクルフックを使用したとしても、データを取得する前に画面がレンダリングされて「”TypeError: Cannot read property ” of undefined”」と出てしまうことがあると思います。

解決策としては、v-ifを使いましょう。

例として、上記の場合では

とすればtestList[0]の存在確認を行い、testList[0]が存在した場合にのみ画面を描画することになります。

ぜひお試しください。

終わりに

今回はVue.js+TypeScript環境でデータを取得する前に画面がレンダリングされて「”TypeError: Cannot read property ” of undefined”」というエラーが出てしまう問題の解決策をご紹介いたしました。

【お知らせ】
プログラミングのコンサルタントをすることを考えております。
下記の通り、かなり格安でご用意させていただいております。
【格安】プログラミングコンサル生募集(初心者向け、フリーランス志望向け)

詳しくは下記のリンクをご覧ください。
https://chico-shikaku.com/2020/10/programming-consult-2020/

11月くらいを目処に開始予定です。
最初は募集があれば先着5名くらいを目安に考えております。
質問や意見、問い合わせやお申し込みは下記のリンクよりお願いいたします。
https://docs.google.com/forms/d/e/1FAIpQLSeTXskmlyPAHuhwiOE9togqJPWdhXYCyRoVnFkkbS0VN0Ftug/viewform?usp=sf_link

最後までお読みいただきありがとうございます。
ブログやTwitterでのシェアOKです。
コメントもお待ちしております。
誤植や勘違いなどございましたらコメント欄にて教えていただけると幸いです。






Vue.js

Posted by ちこ