TypeScript中{ [key: string]: string }类型在GraphQL中的等效写法是什么
GraphQL中等效TypeScript
{ [key: string]: string } 类型的实现方案 GraphQL原生没有直接支持动态键的字典类型,针对你的需求可以选择以下两种实现方式:
方案1:自定义标量(最贴合原TS类型效果)
该方案可以直接实现任意字符串为键、值为字符串的字典结构,和你给出的TS类型效果完全一致。
- 首先在Schema中定义自定义标量
# 定义键为字符串、值为字符串的字典标量 scalar StringMap
- 替换
tags字段定义
# schema.gql scalar StringMap type App implements Node { name: String! tags: StringMap! }
你只需要在服务端的标量解析逻辑中添加校验,限制传入/返回的对象所有值都是字符串类型即可正常使用。
方案2:原生GraphQL结构实现(无需自定义标量)
如果你不想引入自定义标量,可以将键值对拆分为结构化列表实现:
# 定义单个键值对结构 type TagEntry { key: String! value: String! } type App implements Node { name: String! tags: [TagEntry!]! }
该方案需要额外做一层数据转换:服务端返回前将字典结构转为[{key: "xxx", value: "yyy"}]格式,客户端拿到数据后再转回字典对象即可。
内容的提问来源于stack exchange,提问作者pacocom
相关产品推荐
相关产品推荐

