не может прочитать свойство нуля, уничтожая - PullRequest
0 голосов
/ 28 августа 2018

Разрушение - это круто, но я начинаю сталкиваться с серьезными проблемами при уничтожении вложенных объектов. У меня есть этот код:

const {
      credit: { amont },
    } = userProfile

Это опасно, потому что, если кредит равен нулю? все приложение ломается. Как мне предотвратить это? Я знаю, что одним из способов является использование Typescript, но я бы предпочел не использовать. Я начинаю сомневаться в том, что разрушение для вложенных элементов не отличается от использования точки.

Ответы [ 2 ]

0 голосов
/ 28 августа 2018

Невозможно решить эту проблему с глубокой деструктуризацией. Как предполагает другой ответ, можно использовать значения по умолчанию , но они применяются только к undefined значениям:

const { credit: { amont } = {} } = userProfile || {};

Хотя значения null по-прежнему приводят к ошибке, необходимо выполнить оценку короткого замыкания для всех объектов, которые потенциально могут быть равны нулю:

const { credit } = userProfile || {};
const { amont } = credit || {};

Эту проблему можно решить с помощью функции безопасной навигации, которая считывает путь и проверяет нулевые значения.

Известный пример: Lodash get:

const amont = _.get(userProfile, 'credit.amont');

Я знаю, один способ - использовать машинопись, но здесь я не

Это можно решить с помощью TypeScript, только если безопасность типов гарантирована. Если userProfile приходит из ответа JSON, необходимо применить проверки типов во время выполнения, чтобы подтвердить, что объекты не являются null.

0 голосов
/ 28 августа 2018

Вы можете избежать сбоев вашего приложения, задав значения по умолчанию при уничтожении:

const {
  credit: { amont } = {},
} = userProfile
console.log(amont); //amont will be undefined

Позже вы можете проверить amont по !!amont везде, где вы его используете.

...