Выборка не покрыта потоком

Я борюсь с API выборки и реализацией flowjs внутри собственного приложения.

Используя Nuclide, я вижу, что функция выборки, которую я использую для получения данных из удаленного API, не распространяется на Flow...

Да, нет ничего страшного, если я получу мониторинг 99% своего кода, но все же. Я хочу понять, что происходит.

Я установил типизированный поток. Я создал заглушку для своей выборки, я вижу ее в файле с типом потока /npm/fbjs_vx.xxx и вот он:

declare module 'fbjs/lib/fetch' {
  declare module.exports: any;
}

Я также пытаюсь загрузить альтернативный ponyfill или polyfill, чтобы эта линия была безуспешной.

Если libdef уже не существует, как я могу сказать "получить строку в качестве аргумента и вернуть обещание"?

Спасибо за помощь

ОБНОВИТЬ

Вот пакет.json

{
  "name": "BeerOmatic",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "start": "node node_modules/react-native/local-cli/cli.js start",
    "test": "jest",
    "flow": "flow",
    "android": "ENVFILE=.env.dev react-native run-android"
  },
  "dependencies": {
    "eslint-config-airbnb-flow": "^1.0.2",
    "eslint-plugin-flowtype": "^2.35.0",
    "fetch-ponyfill": "^4.1.0",
    "flow-typed": "^2.1.2",
    "react": "16.0.0-alpha.12",
    "react-native": "0.46.3",
    "react-native-config": "^0.5.0",
    "react-native-fetch-polyfill": "^1.1.2",
    "react-native-navigation": "^1.1.136",
    "react-redux": "^5.0.5",
    "redux": "^3.7.2",
    "redux-logger": "^3.0.6",
    "redux-thunk": "^2.2.0",
    "whatwg-fetch": "^2.0.3"
  },
  "devDependencies": {
    "babel-cli": "^6.24.1",
    "babel-eslint": "^7.2.3",
    "babel-jest": "20.0.3",
    "babel-preset-flow": "^6.23.0",
    "babel-preset-react-native": "2.1.0",
    "eslint": "^3.19.0",
    "eslint-config-airbnb": "^15.0.2",
    "eslint-plugin-import": "^2.7.0",
    "eslint-plugin-jsx-a11y": "^5.1.1",
    "eslint-plugin-react": "^7.1.0",
    "eslint-plugin-react-native": "^2.3.2",
    "flow-bin": "^0.50.0",
    "jest": "20.0.4",
    "react-test-renderer": "16.0.0-alpha.12"
  },
  "jest": {
    "preset": "react-native"
  }
}

1 ответ

Решение

Ну... так как большую часть времени, ответ был в документе...

Чтобы объявить глобальную функцию, которая должна быть доступна в вашем проекте, используйте синтаксис объявления функции в файле libdef:

проточные типизированных /myLibDef.js

объявить функцию foo(a: number): string; Это сообщает Flow, что любой код в проекте может ссылаться на глобальную функцию foo, и что функция принимает один аргумент (число) и возвращает строку.

Поэтому я добавил, что

declare function fetch (a: string): Promise;

в совершенно новый файл myLibDef.js в корне моей типизированной папки. Затем, что удивительно, мне пришлось добавить его в мой.flowConfig (в разделе libs). Я был почти уверен, что это было автоматически, но... хорошо... В любом случае, выборка покрыта! \0/

Другие вопросы по тегам