Dmi*_*sev 6 javascript types typechecking flowtype
numberFlow 中的内置类型允许使用 "exotic" 值,例如Infinity,-Infinity和NaN。
如何强制类型只允许实数?
编辑。这不是如何检查变量是否为实数的问题。这是关于使用 Flow 打字。
我正在寻找编写函数的方法,例如:
// @flow
function sum (x: real, y: real) { ... }
Run Code Online (Sandbox Code Playgroud)
我的问题是如何定义类型real以使其适用于 Flow ( http://flowtype.org/ )。
使用 Flow 无法做到这一点。您需要运行时检查。
请参阅此处对实数问题的讨论:https ://github.com/facebook/flow/issues/1406
最重要的是,几乎任何对实数的操作都可能导致无穷大,因此区分实数和 NaN / Infinity 并不是很有用,因为它会返回一个不能保证为实数的类型。
例如,
Number.MAX_VALUE + Number.MAX_VALUE === Infinity
-Number.MAX_VALUE - Number.MAX_VALUE === -Infinity
Number.MAX_VALUE * 2 === Infinity
Number.MAX_VALUE / 0.5 === Infinity
Run Code Online (Sandbox Code Playgroud)
与该讨论不同的是,Flow 没有任何功能可以将某些值列入黑名单,同时允许相同类型的其他值。您只能将值列入白名单,包括使用并集和交集。
| 归档时间: |
|
| 查看次数: |
2089 次 |
| 最近记录: |