facebook / facebook/flow

Support for lower type bounds

Offen
#3,950 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
feature request
Vorherrschende Sprache
Rust
Sterne
22.3k
Forks
1.9k
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

Flow supports bounded polymorphism (https://flow.org/blog/2015/03/12/Bounded-Polymorphism/), a way of declaring upper type bounds.

Is there a way to express a lower type bound? I've tried using `$Supertype` which doesn't work ([flow link](https://flow.org/try/#0MYewdgzgLgBAZiEMC8MA8BBANDAQgLhgBIBlAVwAcBTAJygE9rMA+ZgCgENDsYAjQ3AEoBKZjADeAKBgwaVKGRpgYUGmSowA-DA4xCvANySAvgaA))

```jsx
const foo = >(a: A, b: B): B => {
return true ? a : b;
};
```

I need to use this to type a `getOrElse`:

```jsx
const getOrElse = >(opt: Option) => (def: B): B => {
if (opt.isEmpty() {
return def;
} else {
return opt.get();
}
};
```

Am I using `$Supertype` incorrectly, and is there a better way to express this?

Beitragsleitfaden

Beitragsleitfaden öffnen

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.