我希望这段代码能进行类型检查 in Flow就像它一样in TypeScript :
var onClick : (() => void) | (() => boolean);
onClick = () => { return true; }
相反,我收到此错误:
4: onClick = () => { return true; }
^ function. Could not decide which case to select
3: var onClick : (() => void) | (() => boolean);
^ union type
这个设计决策是否有一个通用名称,其背后的原因是什么?
是否可以要求 Flow 检查器从 return 语句推断函数的返回类型?
最佳答案
您需要提供一个显式转换,例如:
type FuncV = () => void;
type FuncB = () => boolean;
var onClick : FuncV | FuncB;
onClick = (() => { return true; }: FuncB);
或者使用存在类型,例如:
type Func<T: (void | string)> = () => T;
var f: Func<*>;
f = () => { return "hello"; };
var msg = f() + " world!"; // type checks against return value above
关于typescript - 为什么 Flow 不根据函数的返回值推断函数的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44979210/