如何使用 Apollo 后端在 TypeScript Angular 应用程序中输入部分类型?

Ka *_*Mok 7 typescript apollo graphql angular

编辑:我正在寻找来自 Graphql-Angular 社区的权威和来源答案,以提供最佳实践示例。

例如,我们在 TypeScript 中定义了一个 Person 类型:

interface Person {
  firstName: string;
  lastName: string;
  birthDate: Date;
  age: number;
  ...and many more attributes
}
Run Code Online (Sandbox Code Playgroud)

假设您有一个组件,并且根据 graphql 的口头禅,您只获取您需要的内容。没有过度获取和不足获取。

我只需要PersonfirstNameage所以我在 Apollo 查询中进行了它。

现在,我如何输入我刚刚获取的这个对象?

该结构是 的一部分Person,所以我倾向于简单地这样做Partial<Person>。这使得所有声明的属性都是Person可选的。

但这不是这里发生的事情。Person我们仅使用age和来提取 的一部分firstName。就是这样。

除了制作另一个界面之外,是否没有其他方法可以正确输入:

interace MyComponentPerson {
  firstName: string;
  age: number;
}
Run Code Online (Sandbox Code Playgroud)

有官方的风格指南/方法来做到这一点吗?我问过他们,但没有得到答复。也查看了文档,没有看到任何与此相关的内容。

Mat*_*hen 4

您可以定义:

type MyComponentPerson = Pick<Person, "firstName" | "age">;
Run Code Online (Sandbox Code Playgroud)

如果您想根据查询自动生成此类型,TypeScript 中的 Type gql-tag之类的东西可能适合您。如果该解决方案不太正确,请提供您的查询示例,我也许可以提供帮助。