発生したエラー
TypeScriptで、オブジェクト型の変数に対してlengthを取得しようとすると、TS2339
エラーが発生する。
- コード(react)
type UsersType {
...
};
const [user, setUser] = React.useState<UserType>();
if (user.length <= 0) { // ここでTS2339エラー
...
}
- 発生したエラー
TS2339: Property 'length' does not exist on type 'UserType'.
理由
エラーメッセージが正しくて、(Arrayとは異なり)オブジェクト型の変数にはlengthのプロパティが存在しない。
対処
本来行いたかったことは、該当のオブジェクトにキーが1つ以上存在するかだったため、以下の形でkeysの配列を取得した上でlengthのプロパティを参照したところエラーが解消した。
if (user.length <= 0) {
↓
if (Object.keys(user).length <= 0) {
こちらもおススメ