跳至主要內容

文字類型

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]

您可以對這些類型使用基本值

  • 布林值:例如 truefalse
  • 數字:例如 423.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 列舉,而不是文字類型的聯合。