自定义类型检查的状态检查

时间:2020-05-05 15:51:23

标签: javascript reactjs typescript

如果我的状态属于此自定义类型:

  interface DataType { [key: string]: string;}

  const [data, setData] = React.useState<DataType>({});

然后我尝试

console.log(data === {})

为什么它返回false?

如何检查状态是否仍为{}

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

比较data === {}时,将根据类型和引用执行相等性检查。

一个对象不等于另一个对象。您需要检查数据是否是对象,而不是null或数组,并且没有键来查看其空对象

const isEmptyObject = (data) => {
    if(data !== null && typeof data === 'object' &&!Array.isArray(data)) {
       return Object.keys(data).length === 0;
    }
    return false;
}


console.log(isEmptyObject({}));
console.log(isEmptyObject({x: 1}));