字面量类型
Flow 对于字面量值使用 原始类型,但也可以使用字面量值作为类型。
¥Flow has primitive types for literal values, but can also use literal values as types.
例如,我们可以只接受字面量值 2
,而不是接受 number
类型。
¥For example, instead of accepting number
type, we could accept only the
literal value 2
.
1function acceptsTwo(value: 2) { /* ... */ }2
3acceptsTwo(2); // Works!4
5acceptsTwo(3); // Error!6acceptsTwo("2"); // Error!
你可以对这些类型使用原始值:
¥You can use primitive values for these types:
布尔值:像
true
或false
¥Booleans: like
true
orfalse
数字:像
42
或3.14
¥Numbers: like
42
or3.14
字符串:像
"foo"
或"bar"
¥Strings: like
"foo"
or"bar"
大整数:像
42n
¥BigInts: like
42n
与 联合类型 一起使用这些功能非常强大:
¥Using these with union types is powerful:
1function getColor(name: "success" | "warning" | "danger") {2 switch (name) {3 case "success" : return "green";4 case "warning" : return "yellow";5 case "danger" : return "red";6 }7}8
9getColor("success"); // Works!10getColor("danger"); // Works!11
12getColor("error"); // Error!
如果适合你的用例,请考虑使用 Flow 枚举 而不是字面量类型的联合。
¥Consider using Flow Enums instead of unions of literal types, if they fit your use-case.