【问题标题】:Flow: Can you declare output as a cast of an input type?流程:您可以将输出声明为输入类型的转换吗?
【发布时间】:2018-02-26 15:50:10
【问题描述】:

我有一些日志记录函数会根据他们是否记录任何内容返回true/false,所以我可以这样做:

if (log.onError((err: ?Error), 'can not do thing')) {
  return;
}

我正在尝试修复 log.onError 的注释,以便它有效:

function onError(err: ?Error, msg: string): (err: boolean) {
  // log stuff
  return !!err;
}

最后的(err: boolean) 无效,但这是我想要做的。

【问题讨论】:

    标签: javascript flowtype


    【解决方案1】:

    你应该只写返回类型,像这样:

    function onError(err: ?Error, msg: string) : boolean {
      // log stuff
      return !!err;
    }
    

    【讨论】:

    • 是的,我知道这就是通常的做法。我试图将返回类型绑定到输入,以便可以对其进行静态分析,并且if 语句可以导致流从其后面的代码中过滤掉类型。像onError<T: ?Error>(err: T, msg: string) => T 这样的东西会完成同样的事情,但我会丢失类型信息
    猜你喜欢
    • 2011-08-12
    • 2010-10-02
    • 2013-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多