/* @flow */
class Foo {
blah: string;
bar: string;
constructor(blah: string, bar?: string) {
this.blah = blah
if (bar) {
this.bar = bar
}
}
}
const foo = new Foo('okok')
foo.bar
https://flowtype.org/try/#0PQKgBAAgZgNg9gdzCYAoVBjGBDAzrsAMTjjAG9UBIAI2wCcAuMXAFzoEsA7AcwG5UAvugxxOrMFBJgAvGE4BTJMTgAKAJSpJcAHS06QAFlowtype: Опасное экземпляр переменного доступ
Что это не бросать ошибку flowtype?
Edit:
Это потенциально отвечает на мой вопрос ...
https://flowtype.org/docs/nullable-types.html#undefined-values-and-optional-types
Неопределенные значения и дополнительные типы неопределенные значения, так же, как нуль, может вызвать проблемы тоже. К сожалению, неопределенные значения являются вездесущими в JavaScript, и их трудно избежать, без серьезного воздействия на удобство использования языка. Например, в массивах могут быть отверстия для элементов; свойства объекта можно динамически добавлять и удалять. Поток игнорирует возможность неопределенности в результате свойства объекта и доступа к элементам массива. Быть более строгим заставит программиста выполнять неопределенные проверки (например, нулевые проверки) при каждом разыменовании элемента массива или свойства объекта , чтобы получить что-либо полезное.
Однако поток обнаруживает неопределенные локальные переменные и возвращает значения , и он считает, что необязательные параметры и свойства могут быть undefined. Таким образом, использование этих типов должно быть защищено неопределенными проверками, чтобы избежать ошибок.