facebook / facebook/flow

Support for Comparables with `valueOf`

未關閉
#2,406 1 則留言 4 個 reaction 已指派 0 人 在 GitHub 檢視
feature request
主要語言
Rust
星號
22.3k
分支
1.9k
PR 合併指標
30 天內沒有已合併 PR

描述

Consider this:

``` javascript
interface Comparable {
valueOf(): number;
}

class Comparer {

greater (first: Key, second: Key): boolean {
// flow error: Cannot be compared to Comparable
return first > second;
}
}
```

The [`valueOf()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/valueOf) method gets special treatment in Javascript and returns the primitive value for an Object type.

It can be implemented by any object so that they can be used in comparisons with the '<', '==', '===' and '>' operators. However, from the example above it appears to be the case that flow doesn't understand that the `valueOf()` method in the `Comparable` interface can be used without calling `first.valueOf() > second.valueOf()` directly.

I'd love to see this implemented in flow. It will be nice if flow throws the error only if the given item is an object type and doesn't implement `valueOf()`.

貢獻指南

開啟貢獻指南

評估

這個 Issue 還沒有評估資料。

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。