facebook / flow

Adds static typing to JavaScript to improve developer productivity and code quality.
https://flow.org/
MIT License
22.1k stars 1.86k forks source link

Best Practices for 3rd party authoring #2108

Open dozoisch opened 8 years ago

dozoisch commented 8 years ago

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 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.

avikchaudhuri commented 8 years ago

@jeffmo WDYT?

TrySound commented 6 years ago

Is this still relevant?

Brianzchen commented 4 years ago

Probably relevant, there's still no docs around shipping third party types. Related to #3420