Государственная проверка проверки нестандартного типа - PullRequest
2 голосов
/ 05 мая 2020

Если у меня есть состояние этого настраиваемого типа:

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

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

, и я затем пробую

console.log(data === {})

Почему возвращается false?

А как я могу проверить состояние все еще {}?

Спасибо за помощь!

1 Ответ

1 голос
/ 05 мая 2020

При сравнении data === {} проверка на равенство выполняется на основе типа и ссылки.

Объект не равен другому объекту. Вам нужно проверить, являются ли данные объектом, а не нулевым или массивом и не имеют ключей, чтобы увидеть, является ли его пустой объект

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}));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...