Как мне представить строковое перечисление (строковое литеральное объединение) в graphql? - PullRequest
0 голосов
/ 02 мая 2020

У меня есть короткий список строковых литералов, которые я хотел бы представить в своем определении 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];  

Как я могу взять это и сделать тип GraphQl, который был бы более описательным чем GraphQlString? В идеале это было бы возможно автоматически предложить в интерактивном интерфейсе.

1 Ответ

1 голос
/ 02 мая 2020

В GraphQL нет эквивалентной структуры данных. Вы можете использовать перечисление для того, что вы пытаетесь сделать, но вам нужно будет изменить имена значений перечисления, чтобы они соответствовали требованиям к наименованию спецификации .

enum DanceType {
  truffle_shuffle
  stanky_leg
  ghost_ride_the_whip
}

В большинстве В реализациях GraphQL каждое значение перечисления можно сопоставить с отдельным «внутренним» значением, чтобы упростить сопоставление их с внутренним представлением, например, перечислением Postgres. См. Здесь для получения дополнительной информации.

Вы также можете использовать пользовательский скаляр , который будет разрешать только строки с определенными значениями - однако вы не получите такое же автозаполнение Вы бы, если бы вы использовали перечисление.

...