文字類型
Flow 有用於文字值的 基本類型,但也可以將文字值用作類型。
例如,我們可以只接受文字值 2
,而不是接受 number
類型。
1function acceptsTwo(value: 2) { /* ... */ }2
3acceptsTwo(2); // Works!4
5acceptsTwo(3); // Error! 6acceptsTwo("2"); // Error!
5:12-5:12: Cannot call `acceptsTwo` with `3` bound to `value` because number [1] is incompatible with number literal `2` [2]. [incompatible-call]6:12-6:14: Cannot call `acceptsTwo` with `"2"` bound to `value` because string [1] is incompatible with number literal `2` [2]. [incompatible-call]
您可以對這些類型使用基本值
- 布林值:例如
true
或false
- 數字:例如
42
或3.14
- 字串:例如
"foo"
或"bar"
- 大整數:例如
42n
將這些與 聯合類型 一起使用非常強大
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!
12:10-12:16: Cannot call `getColor` with `"error"` bound to `name` because string [1] is incompatible with literal union [2]. [incompatible-call]
如果符合您的使用案例,請考慮使用 Flow 列舉,而不是文字類型的聯合。