facebook / facebook/flow

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

Abierto
#2,437 0 comentarios 0 reacciones 0 asignados Ver en GitHub
Typing: unions/intersections
Lenguaje dominante
Rust
Estrellas
22.3k
Forks
1.9k
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

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.

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.