Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 重载函数类型 问题_Javascript_Flowtype - Fatal编程技术网

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');