facebook / facebook/flow

Create a "Comparable" interface

Open
#388 4 comments 3 reactions 0 assignees View on GitHub
feature request
Dominant language
Rust
Stars
22.3k
Forks
1.9k
PR merge metrics
No merged PRs in 30d

Description

This code:

``` javascript
/** @flow */

class Foo {
val: T;

lessThan(other: Foo) {
return this.val < other.val; // XXX flow doesn't like this comparison
}
}
```

produces the following error:

```
baderror.js:3:15,20: number
This type is incompatible with
baderror.js:7:12,31: string

baderror.js:3:22,27: string
This type is incompatible with
baderror.js:7:12,31: number

Found 2 errors
```

In most type systems, the `T` in `other: Foo` would be the same `T` as for the current class. This would result in number↔number and string↔string comparisons, but never number↔string.

Removing the `` in `other: Foo` makes the error go away, but now I have no confidence that Flow is actually checking anything.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.