Flow has primitive types for literal values, but can also use literal values as types.
For example, instead of accepting number
type, we could accept only the literal value 2
.
// @flow function acceptsTwo(value: 2) { // ... } acceptsTwo(2); // Works! // $ExpectError acceptsTwo(3); // Error! // $ExpectError acceptsTwo("2"); // Error!
You can use primitive values for these types:
true
or false
42
or 3.14
"foo"
or "bar"
Using these with union types is powerful:
// @flow function getColor(name: "success" | "warning" | "danger") { switch (name) { case "success" : return "green"; case "warning" : return "yellow"; case "danger" : return "red"; } } getColor("success"); // Works! getColor("danger"); // Works! // $ExpectError getColor("error"); // Error!
© 2013–present Facebook Inc.
Licensed under the MIT License.
https://flow.org/en/docs/types/literals