如何在 graphql 中表示字符串枚举(字符串文字联合)?

Sep*_*eed 4 enums types graphql

我有一个简短的字符串文字列表,我想在 GraphQl 定义中表示它们。我尝试使用枚举,但它不适用于字符串文字。

假设我有一些字符串文字列表:

export const DanceTypeList = [
    "truffle-shuffle",
    "stanky-leg",
    "ghost-ride-the-whip",
] as const;

// equivalent to ("truffle-shuffle" | "stanky-leg" | "ghost-ride-the-whip")
export type DanceType = typeof DanceTypeList[number];  
Run Code Online (Sandbox Code Playgroud)

我怎样才能利用这个并创建一个比 GraphQlString 更具描述性的 GraphQl 类型?理想情况下,它能够在交互式用户界面中自动建议。

Dan*_*den 5

GraphQL 中没有等效的数据结构。您可以使用枚举来完成您想要执行的操作,但您需要修改枚举值的名称以满足规范的命名要求

enum DanceType {
  truffle_shuffle
  stanky_leg
  ghost_ride_the_whip
}
Run Code Online (Sandbox Code Playgroud)

在大多数 GraphQL 实现中,每个枚举值都可以映射到单独的“内部”值,以便更轻松地将它们映射到内部表示,例如 Postgres 枚举。请参阅此处了解更多详细信息。

您还可以使用仅允许某些值的字符串的自定义标量- 但是,您将无法获得与使用枚举相同的自动完成功能。