Skip to main content

字面量类型

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:

  • 布尔值:像 truefalse

    ¥Booleans: like true or false

  • 数字:像 423.14

    ¥Numbers: like 42 or 3.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.