Javascript 重载函数类型 问题
我有这样的类型定义:Javascript 重载函数类型 问题,javascript,flowtype,Javascript,Flowtype,我有这样的类型定义: export type StringOrErrorCallback = (error: ?Error, result: string) => void; 错误显然可以为空 但是,我希望结果仅在错误不真实时才存在 如果我这样做: export type StringOrErrorCallback = (error: ?Error, result?: string) => void; 我将result设置为可选,因此该函数的调用者可以选择,但是用户不仅需要检查e
export type StringOrErrorCallback = (error: ?Error, result: string) => void;
错误
显然可以为空
但是,我希望结果
仅在错误
不真实时才存在
如果我这样做:
export type StringOrErrorCallback = (error: ?Error, result?: string) => void;
我将result
设置为可选,因此该函数的调用者可以选择,但是用户不仅需要检查error
参数,还需要检查result
参数
例子
我几乎不认为这是一个好的解决方案(尽管它确实有效),但我刚刚了解了它们是如何在内部为本机函数实现的
export type ResultOrErrorCallback = (error: ?Error, result: any) => void;
function doSomething(error, result: string) {
if (error) {
return console.error(error);
}
// it's a given that "result" exists at this point
}
doSomething(new Error('something happened'));
doSomething(null, 'resulting string');
我不认为在这一点上可以做得很好,但也许有人有一些好的想法
export type ResultOrErrorCallback = (error: ?Error, result: any) => void;
function doSomething(error, result: string) {
if (error) {
return console.error(error);
}
// it's a given that "result" exists at this point
}
doSomething(new Error('something happened'));
doSomething(null, 'resulting string');