facebook / facebook/flow

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

Ouverte
#2,437 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
Typing: unions/intersections
Langage dominant
Rust
Étoiles
22.3k
Forks
1.9k
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

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.

Guide de contribution

Ouvrir le guide de contribution

Évaluation

Cette issue n'a pas encore été évaluée.

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.