GraphQL 中的 Enum 类型及其用法

阅读时长 4 分钟读完

在 GraphQL 中,Enum 类型是一种非常强大的数据类型,可以定义一组可选的值,这些值适用于某些特定时刻的操作,如过滤、排序等。本文将为您详细介绍 GraphQL 中的 Enum 类型及其用法。

枚举类型及其优缺点

首先,让我们来看一下什么是枚举类型。枚举类型是一种固定的列表,其中每个值都属于该列表。相比起字符串或者数字,枚举类型可以提供更为严格的类型检查和更好的代码提示。在 GraphQL 中,枚举类型需要在 Schema 中定义。

枚举类型的优点:

  1. 增加代码的可读性,提高代码的可维护性。
  2. 枚举类型是一种安全的数据类型,可以避免代码中出现未定义的变量值。
  3. 在 GraphQL 中,枚举类型也能够提供更好的代码提示和自动完成。

枚举类型的缺点:

  1. 如果有大量的枚举值,枚举类型的定义会变得过于冗长。
  2. 如果您要添加新的枚举值,您需要修改已有的代码,因为每个客户端都需要重新使用该模式。

因此,在使用枚举类型时,我们需要根据具体场景选择是否使用枚举。

如何使用 Enum 类型

在 GraphQL 中定义 Enum 类型需要使用 enum 关键字,如下所示:

上面的定义定义了一个名为 CatKind 的枚举类型,它包含三种值:HOUSE_CATSTRAY_CATFERAL_CAT。在 GraphQL 中,我们可以用它来过滤某些数据,例如:

上面的查询将会返回所有 kind 属性为 HOUSE_CAT 的猫儿。

在服务器端的代码中,你可以使用各种语言定义枚举类型。例如,使用 TypeScript 定义后端的枚举类型如下:

在 TypeScript 中,枚举类型和普通类型非常类似。它能够被枚举和 union 类型所使用。

枚举类型的应用场景

枚举类型主要用于以下两个场景:

控制输入

枚举类型可以用来指定 GraphQL 操作的参数。这可以确保输入的值不会超出您想要的范围,同时可以提供正确的类型检查和代码提示。

以下是一个使用 enum 的示例:

-- -------------------- ---- -------
---- ------- -
  -------
  ------
  ----
-

---- ------ -
  -------- --------
  ------ ----
  ----------- ------
-

在上面的示例中,枚举类型 Episode 作为 Review 类型的一部分,用于控制 episode 参数。这确保了使用端只能传入 NEWHOPEEMPIREJEDI 其中之一。

控制输出

枚举类型可用于将 API 的输出归类并用于 UI 等其他操作,例如,构建过滤器或选择器。

以下是一个使用 enum 的示例:

-- -------------------- ---- -------
---- ---- -
  -----
  ------
  -----
-

---- ----- -
  ----- -----
  ------ -------
  ------ ----
-

在上面的示例中,枚举类型 Size 作为 Shirt 类型的一部分,用于分类 shirts 的大小。因此,调用端能够使用该字段构建过滤器。

总结

GraphQL 中的 Enum 类型可以帮助我们定义一组可选的值,可用于特定时刻的操作,如过滤、排序等。它可以增加代码的可读性,提高代码的可维护性。枚举类型在定义上需要谨慎,同时也可以被用于控制输入和输出。我们需要在具体场景下,综合考虑使用枚举类型的优缺点,选择何时使用。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64638c9f968c7c53b0495f71

纠错
反馈