我是 flowjs 的新手,还不了解如何在 flowjs 中对未定义参数的典型用例进行建模。
function msg(message: string, callback: ?Function) {
// ...
if (_.isFunction(callback)) {
callback();
}
}
当使用flow检查上述函数时,显示以下错误消息:
- 无法在可能为空值的函数调用上调用函数。
- 无法对可能未定义的值调用函数
我确实明白为什么会显示错误,但我不知道如何告诉 flowjs 这是故意的,因为仅当参数不为 null 或未定义时才会调用回调?
最佳答案
仅当 callback
是函数时,Flow 才知道 _.isFunction(callback)
返回 true
。它只知道它返回一个 bool 值(如果您设置了下划线/lodash 的接口(interface)文件)。您应该进行原生 JS 检查,然后 Flow 可以将 callback
的类型从 ?Function
细化为 Function
。像这样:if (typeofcallback === 'function') {callback() }
。
更简单的类型检查也应该有效:if (callback) {callback() }
,因为 Flow 知道如果 callback
不为 false,则它必须是功能。
关于javascript - 如何在flowjs中指定一个可以未定义的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39341806/