如何为Neptune/Neo4J返回的动态结构数据定义TypeScript类型?
解决方案
自定义TypeScript类型定义
根据你给出的返回结构,可以通过索引签名实现任意键的类型约束,同时固定properties里的必填字段:
// 定义节点的固定属性类型 type NodeProperties = { Name: string; Description: string; online: boolean; }; // 定义单个结果项:任意字符串键对应包含properties的节点对象 type QueryResultItem = { [key: string]: { properties: NodeProperties; }; }; // 定义完整的查询返回结构 type NeptuneNeo4jQueryResponse = { results: QueryResultItem[]; };
这个定义的特点:
results数组中的每个对象支持任意数量、任意名称的键(比如示例中的a/m/d)- 每个键对应的对象必须包含
properties字段,且properties内的Name/Description/online三个字段类型固定且必填
关于预定义类型的说明
Neo4j 相关
Neo4j官方的neo4j-driver包提供了Record、Node等通用驱动类型,但这些类型是针对驱动返回的标准结构设计的,和你给出的特定嵌套格式(外层results数组、内层properties结构)不完全匹配。如果你的数据是自定义Cypher查询的返回结果,直接使用上面的自定义类型会更贴合实际结构,也可以基于官方类型做扩展适配。
Amazon Neptune 相关
AWS SDK中没有针对Neptune查询返回结构的直接预定义TypeScript类型——因为Neptune的返回格式会随查询语言(Gremlin/Cypher)和具体语句变化,自定义类型依然是最灵活适配的选择。
内容的提问来源于stack exchange,提问作者Mark Tyers
相关产品推荐
相关产品推荐

