Почему свойства типа объекта с запечатанным потоком не проверяются в условных выражениях

1

В чем причина того, что свойства закрытого объекта не проверяются в условных выражениях?

Например:

// Create a sealed object type
const o = {
  Foo: 'Foo',
};

// Access a non-existent property
// Reports an Error
const fooz = o.Fooz;

// Conditional with non-existent property
// Does not report an error
if (o.Fooz === undefined) {}

Просто уточнить - это объект, запечатанный потоком

  • 1
    Это не запечатанный объект. Вы хотите const o = Object.seal({Foo: 'Foo'}); или, возможно, Object.freeze...
  • 0
    Спасибо @JaredSmith, я должен уточнить - я считаю, что это запечатанный объект с точки зрения Flow. Глядя на документы ( flow.org/en/docs/types/objects/#toc-sealed-objects ), он читает «Когда вы создаете объект со своими свойствами, вы создаете тип закрытого объекта в Flow».
Показать ещё 1 комментарий
Теги:
flowtype

1 ответ

0
Лучший ответ

Я разместил этот вопрос как проблему потока. Я получил ответ:

Несоблюдение не является ошибкой в условном выражении. См. Комментарий от источника.

Исходный комментарий гласит:

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню