【问题标题】:Flow.js Inferring Return Type from Node ModuleFlow.js 从节点模块推断返回类型
【发布时间】:2019-06-07 23:01:43
【问题描述】:

我正在使用带有联合返回类型的 Flow.js 使用 declare module 键入节点模块。

declare module 'mymodule' {
  declare export default {
    myFunction: () => string | { errors: [] },
  }
}

但是当我在我的应用程序中使用它时

import myModule from 'mymodule'

const { errors } = myModule.myFunction()

Flow.js 不知何故说它应该是一个字符串,并且 errors 不存在于来自 myFunction() 的返回值上。换句话说,它推断它是一个字符串,即使它可能是一个带有errors 的对象。

Flow.js 是否在挖掘节点模块逻辑?没想到这么远。

我在这里遗漏了什么明显的东西吗?

【问题讨论】:

    标签: javascript types frontend flowtype static-analysis


    【解决方案1】:

    Flow 不知道myFunction 将返回一个字符串还是一个对象——分配给myFunction 结果的变量类型是string | { errors: [] }。因此,Flow 希望您将结果视为两者,并且不允许您将变量用作对象或字符串,直到您向 Flow 证明它确实是其中之一 (Try Flow)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-15
      • 1970-01-01
      • 2021-10-23
      • 2015-12-14
      • 2013-12-05
      相关资源
      最近更新 更多