在函数f
中,flow抱怨对象在x(y)
处不可调用。但是,由于类型细化,x
此时不能成为对象。
在功能g
中,添加作业z = x
可解决问题,但功能相同。
/* @flow */
'use strict';
function f(x: {} | (a: number) => number) {
if (typeof x === 'object') {
return x;
}
return (y: number) => x(y);
}
function g(x: {} | (a: number) => number) {
if (typeof x === 'object') {
return x;
}
var z = x;
return (y: number) => z(y);
}
module.exports = {f, g};
发生了什么事?这里没有函数调用会使细化无效。