Type refinement breaks on simple, exact object types
Offen
Typing: refinements
- Vorherrschende Sprache
- Rust
- Sterne
- 22.3k
- Forks
- 1.9k
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Beschreibung
I just discovered exact-typed objects in the docs, but refinement doesn't seem to be working correctly:
```js
type S = {| |};
type L = {|
k: string
|};
declare var x: S | L;
if (x.k === undefined) {
// S|L ↦ S
(x: L); //ng
(x: S);
(x: S | L);
} else {
// S|L ↦ L
(x: L); //Flow mistakenly calls this an error
(x: S); //ng
(x: S | L);
}
if (x.k !== undefined) {
// S|L ↦ L
(x: L); //Flow mistakenly calls this an error
(x: S); //ng
(x: S | L);
} else {
// S|L ↦ S
(x: L); //ng
(x: S);
(x: S | L);
}
```
Beitragsleitfaden
Bewertung
Dieses Issue wurde noch nicht bewertet.