facebook / facebook/flow

Best Practices for 3rd party authoring

Open
#2,108 3 comments 1 reaction 0 assignees View on GitHub
declarations question
Dominant language
Rust
Stars
22.3k
Forks
1.9k
PR merge metrics
No merged PRs in 30d

Description

Hello!

I'm new to flow and I'm trying to get flow to work right in this lib https://github.com/letsroundup/react-native-localytics we open-sourced recently.

I've noticed that when I have a project that includes it directly from the npm package name, I get a module not found error from flow. If I require it from the name given in [providesModules](https://github.com/letsroundup/react-native-localytics/blob/master/VOOLocalytics.ios.js#L2) things are getting flow'd correctly.

Though that feels weird because people are used to require libs from their package name, not their providesModule name. Should I change the providesModule name to be the same as the package name? In that case it would be `@providesModule react-native-localytics`. When I do that flow works as expected.

I'm not sure what the correct answer is here, but I guess it would make sense that a module "provides" with the same name as the npm package name.

Or should I use another approach and ship a .js.flow somewhere or anything else?

---

Also, how should I export the types needed for annotations. Example: one of my function needs CustomerParams to be passed. How can I retrieve that annotation properly from the project that uses this library. Should it be exported from from the main file? Or is there a "standard" name for a file that would export all the type that could be required from the project and then used.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.