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

Types 如何在graphql中表示字符串枚举(字符串文字联合)?,types,enums,graphql,Types,Enums,Graphql,我有一个字符串文本的简短列表,我想在我的GraphQl定义中表示它。我尝试使用enum,但它不适用于字符串文本 假设我有一些字符串文本列表: export const DanceTypeList = [ "truffle-shuffle", "stanky-leg", "ghost-ride-the-whip", ] as const; // equivalent to ("truffle-shuffle" | "stanky-leg" | "ghost-ride-th

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

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

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];  

我怎样才能将其转换为比GraphQlString更具描述性的GraphQl类型?理想情况下,它能够在交互式UI中自动建议。

GraphQL中没有等效的数据结构。您可以使用枚举来完成您要做的事情,但是您需要修改枚举值的名称以满足规范的要求

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


您还可以使用只允许某些值的字符串的。但是,如果使用枚举,您将无法获得与使用枚举相同的自动完成功能。

自定义标量,即使没有自动完成功能,也是我能找到的最佳解决方案。
enum DanceType {
  truffle_shuffle
  stanky_leg
  ghost_ride_the_whip
}