try flow
type G<T> = {|
a: T,
b: T
|};
function foo(p: G<number> | G<string>): number {
if (typeof p.a === 'number') {
return p.b; // Error: Cannot return `p.b` because string [1] is incompatible with number
} else {
return 1;
}
}
В примере выше, почему поток не знает, является ли одно из свойств объекта одним из типов, тогда остальные типы должны быть таким же?