facebook / facebook/flow

Cannot infer Object type if it is union type on interface property

Aperta
#2,437 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub
Typing: unions/intersections
Lingua principale
Rust
Stelle
22.3k
Fork
1.9k
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

Hi, I'm facing this problem but I cannot find the description about this behavior in documentation.

**Version** 0.32.0

**Reproduction**
https://tryflow.org/?code=LyogQGZsb3cgKi8KCmludGVyZmFjZSBPcHRpb25zIHsKICBib2R5OiBPYmplY3QgfCBGb3JtRGF0YTsKfQoKY29uc3Qgb3B0aW9uczogT3B0aW9ucyA9IHsKICBib2R5OiB7CiAgICBmb286ICdmb28nLAogICAgYmFyOiB0cnVlCiAgfQp9

``` js
/* @flow */
interface Options {
body: Object | FormData;
}

const options: Options = {
body: {
foo: 'foo',
bar: true
}
}
```

**Expected behavior**
Successfully compiled without error.

**Actual behavior**
Failed to compile and the following error is printed.

```
test.js:8
8: body: {
^ property `bar`. Property not found in
4: body: Object | FormData;
^^^^^^^^ FormData

test.js:8
8: body: {
^ property `foo`. Property not found in
4: body: Object | FormData;
^^^^^^^^ FormData

Found 2 errors
```

Note that if I remove `FormData` from the type of `body` or cast `body` value to `Object` explicitly, the error is not occurred.

Guida per i contributori

Apri la guida per i contributori

Valutazione

Questa issue non è ancora stata valutata.

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.