如何指定一个可以在flowjs中未定义的参数
How to specify a parameter that can be undefined in flowjs
我是 flowjs 的新手,尚不了解应如何在 flowjs 中对未定义参数的典型用例建模。
function msg(message: string, callback: ?Function) {
// ...
if (_.isFunction(callback)) {
callback();
}
}
用flow检查上述函数时,出现如下错误信息:
- 无法调用可能为空值的函数调用。
- 无法对可能未定义的值调用函数
我明白为什么会显示错误,但我不确定如何告诉 flowjs 这是故意的,因为回调仅在参数不为 null 或未定义时调用?
Flow 不知道 _.isFunction(callback)
returns true
只有 callback
是一个函数。它所知道的是它 returns 是一个布尔值(如果您设置了 underscore/lodash 的接口文件)。您应该改用原生 JS 检查,然后 Flow 可以将 callback
的类型从 ?Function
细化为 Function
。像这样:if (typeof callback === 'function') { callback() }
.
更简单的类型检查也应该有效:if (callback) { callback() }
因为 Flow 知道如果 callback
不是假的,它必须是一个函数。
查看更多
我是 flowjs 的新手,尚不了解应如何在 flowjs 中对未定义参数的典型用例建模。
function msg(message: string, callback: ?Function) {
// ...
if (_.isFunction(callback)) {
callback();
}
}
用flow检查上述函数时,出现如下错误信息:
- 无法调用可能为空值的函数调用。
- 无法对可能未定义的值调用函数
我明白为什么会显示错误,但我不确定如何告诉 flowjs 这是故意的,因为回调仅在参数不为 null 或未定义时调用?
Flow 不知道 _.isFunction(callback)
returns true
只有 callback
是一个函数。它所知道的是它 returns 是一个布尔值(如果您设置了 underscore/lodash 的接口文件)。您应该改用原生 JS 检查,然后 Flow 可以将 callback
的类型从 ?Function
细化为 Function
。像这样:if (typeof callback === 'function') { callback() }
.
更简单的类型检查也应该有效:if (callback) { callback() }
因为 Flow 知道如果 callback
不是假的,它必须是一个函数。