flow-runtime
flow-runtime copied to clipboard
Export Flow types as part of the module
This is a:
- [ ] Bug Report
- [x] Feature Request
- [ ] Question
- [ ] Other
Which concerns:
- [x] flow-runtime
- [ ] babel-plugin-flow-runtime
- [ ] flow-runtime-validators
- [ ] flow-runtime-mobx
- [ ] flow-config-parser
- [ ] The documentation website
What is the current behaviour?
Currently, the flow-runtime library does not export it's Flow types as part of the module.
What is the expected behaviour?
Incorrect usage of flow-runtime without babel should trigger Flow errors.
// @flow
import t, {type Type} from "flow-runtime";
opaque type PositiveNumber: number = number;
// Example refined type.
const PositiveNumberType: Type<PositiveNumber> = t.refinement(
t.number(),
(x: number) => {
if (x < 0) return "must be positive";
}
);
// Signature is accepts(input: any): boolean
// But we're passing more arguments and expecting wrong return type.
const _: string = PositiveNumberType.accepts(1, 2, 3, 4);
// Also should be caught by static Flow checks.
() => PositiveNumberType.methodDoesntExist();
Which package versions are you using?
flow-runtime: 0.17.0