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"」というエラーが出てしまう問題の解決策をご紹介いたしました。

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

Youtubeチャンネル開設いたしました。
チャンネル登録者1000人を目指しているので、良いと思った方はチャンネル登録をお願いしたいです。
https://www.youtube.com/channel/UC219XhmSRxmXltTy6COxSMw






Vue.js

Posted by ちこ