TS2339: Property 'x' does not exist on type 'Y'
TypeScriptで型に存在しないプロパティにアクセスした際のエラー
概要
TypeScriptで、ある型に定義されていないプロパティにアクセスしようとした際に発生するコンパイルエラーです。
エラーメッセージ
TS2339: Property 'x' does not exist on type 'Y'.
原因
- 型定義の不足: オブジェクトの型にプロパティが定義されていない
- 型の絞り込み不足: Union型やunknown型を適切に絞り込んでいない
- オプショナルプロパティ: プロパティがundefinedの可能性がある
- APIレスポンスの型: 外部APIのレスポンス型が不完全
解決策
1. インターフェースにプロパティを追加
| |
2. 型ガードで絞り込む
| |
3. Optional ChainingとNullish Coalescing
| |
4. 型アサーション(慎重に使用)
| |
5. Record型やインデックスシグネチャ
| |
6. APIレスポンスの型を定義
| |
7. Discriminated Unions
| |
よくある間違い
as anyで型エラーを無視する(型安全性が失われる)- 外部ライブラリの型定義が古い場合に気づかない
- JSON.parse()の戻り値をそのまま使用する
関連エラー
参考リンク
TypeScript の他のエラー
この記事は役に立ちましたか?