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