如何从可空嵌套对象中提取Typescript类型(graphql-codegen场景)
提取方法
你可以使用 TypeScript 内置的 NonNullable 工具类型配合索引访问类型实现嵌套类型提取,写法如下:
// 提取得到的类型和你标注的目标tags类型完全一致 type ExtractedTagsType = NonNullable<ManageTeamPageQuery['authedTeam']>['tags'];
逻辑说明
ManageTeamPageQuery['authedTeam']是直接读取根查询类型上的authedTeam属性原始类型,该类型为可选属性 +Maybe包装,实际为Team类型 | null | undefinedNonNullable<>会直接排除传入类型中的null和undefined类型,得到 graphql-codegen 生成的完整Team对象类型- 最后通过
['tags']索引访问Team对象上的tags属性,即可得到你需要的完整tags类型
如果你后续需要进一步提取单个Tag的类型,可以继续向下嵌套处理:
// 提取非空的Tag数组类型 type NonNullTagsArray = NonNullable<ExtractedTagsType> // 提取单个Tag的完整类型(排除数组和Maybe包装) type SingleTagType = NonNullable<NonNullable<ExtractedTagsType>[number]>
内容的提问来源于stack exchange,提问作者Jordan Lewallen
相关产品推荐
相关产品推荐

