Хорошо, учитывая следующий простой код:
/* @flow */
type A = {|
value: {id: number} | number,
value2: string,
|}
type B = {
...$Exact<A>,
value: number,
}
function foo(b:B, add: number) {
console.log(b.value + add);
console.log(b.value2)
}
const v: A = {
value: 2,
value2: 'a',
}
if (typeof v.value === 'number') {
foo(v);
}
typeof
должен указывать, что тип уточнен до "числа", и, таким образом, это может быть аргумент foo
. Однако, когда я проверяю это в скрипке , отображаются ошибки. (Cannot call
Foo with
v bound to
B because object type [1] is incompatible with number [2] in property
значение .
)