应该如何输入`Country = "United States" | “加拿大” | ...` 用 GraphQL 表示吗?

问题描述

使用 https://graphql-code-generator.com/,GraphQL 中的类型只是设置为 String,但在我的带有下拉输入的客户端代码中,类型更具体,因为它派生自下拉选项本身:

export const CODE_NAME_MAP = {
  AFG: 'Afghanistan',AGO: 'Angola',// ...
export type Country = typeof CODE_NAME_MAP[keyof typeof CODE_NAME_MAP]

在这种情况下,从服务器返回的 graphql 数据的类型比客户端所做的要少。有没有更好的方法来表示这些类型,使它们相同?我在尝试在枚举中使用国家/地区名称时遇到验证错误

解决方法

这有点难以帮助,因为您没有提供预期的类型,但是您是否考虑过声明 Object Type?然后,您可以将类型与您期望的类型相匹配,并在您的架构中正确分配它。