Flow.js, возвращающий тип возврата из модуля узла - PullRequest
0 голосов
/ 07 июня 2019

Я набираю модуль узла, используя declare module, используя Flow.js с типом возврата объединения.

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

Но потом, когда я использую его в моем приложении

import myModule from 'mymodule'

const { errors } = myModule.myFunction()

Каким-то образом Flow.js говорит, что это должна быть строка, и errors не существует для этого возвращаемого значения из myFunction(). Другими словами, это вывод о том, что это строка, хотя это может быть объект с errors.

Flow.js копается в логике модуля узла? Я не думал, что это зашло так далеко.

Я что-то упускаю здесь очевидное?

1 Ответ

1 голос
/ 07 июня 2019

Поток не знает, вернет ли myFunction строку или объект - тип переменной, присваиваемой результату myFunction, равен string | { errors: [] }. Поэтому Flow хочет, чтобы вы рассматривали результат как оба, и не позволит вам использовать переменную в качестве объекта или строки, пока вы не докажете Flow, что это действительно один из них ( Попробуйте Flow ).

...