我正在使用带有联合返回类型的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是否正在深入研究节点模块逻辑?我不认为它走得那么远。
我在这里缺少明显的东西吗?
答案 0 :(得分:1)
Flow不知道myFunction
是否会返回字符串或对象-分配给myFunction
结果的变量类型为string | { errors: [] }
。因此,Flow希望您将结果视为两者,并且不允许您将变量用作对象或字符串,除非您向Flow证明它确实是其中之一(Try Flow)。