/* @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/docs/nullable-types.html#undefined-values-and-Optional-Types
Неопределенные значения и необязательные типы Неопределенные значения, как и null, также могут вызывать проблемы. К сожалению, неопределенные значения широко распространены в JavaScript, и их трудно избежать, не нанеся серьезного ущерба удобству использования языка. Например, массивы могут иметь отверстия для элементов; свойства объекта можно динамически добавлять и удалять. Поток игнорирует возможность неопределенности в результате доступа к свойствам объекта и элементам массива. Более строгие требования заставят программиста выполнять неопределенные проверки (например, проверки на нуль) при каждом разыменовании элемента массива или свойства объекта, чтобы сделать что-то полезное.
Однако Flow обнаруживает неопределенные локальные переменные и возвращаемые значения и считает, что необязательные параметры и свойства могут быть неопределенными. Таким образом, использование этих типов должно быть защищено неопределенными проверками, чтобы избежать ошибок.