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

2024-04-22

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

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

interface Person {
  firstName: string;
  lastName: string;
  birthDate: Date;
  age: number;
  ...and many more attributes
}

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

我只需要Person's firstName and age,所以我在 Apollo 查询中做了这个。

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

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

但这不是这里发生的事情。我们正在拉取一部分Person仅与age and firstName。就是这样。

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

interace MyComponentPerson {
  firstName: string;
  age: number;
}

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


您可以定义:

type MyComponentPerson = Pick<Person, "firstName" | "age">;

如果您想根据查询自动生成此类型,例如在 TypeScript 中输入 gql-tag https://stackoverflow.com/questions/51968157/type-gql-tag-in-typescript/51968630可能适合你。如果该解决方案不太正确,请提供您的查询示例,我也许可以提供帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 使用服务器端数据源时,标题复选框选择不起作用

    正如标题所示 我正在使用ag grid与 Angular 我使用一个自定义类来实现IServerSideDatasource用于从 API 获取数据rowModelType设置为 服务器端 问题是当我设置headerCheckboxSele
  • 类型“void”不可分配给类型“((event:MouseEvent) => void) |不明确的'

    import as React from react import App css import PageTwo from components PageTwo export interface IPropsk data Array
  • 找不到“节点”的类型定义文件

    更新 Angular Webpack 和 TypeScript 后出现奇怪的错误 知道我可能会错过什么吗 当我使用 npm start 运行应用程序时 出现以下错误 at loader Cannot find type definition
  • 如何让 vsCode 了解自动补全的深度依赖导入?

    我创建了多个角度库 让我可以使用一堆组件更快地创建网站 例如 sidenav 卡片 我创建了一个 超级库 来导入所有这些库 这样我就可以使用npm i myWebsiteBundle立即下载所有依赖项 我已将每个类似的插件列入白名单ng p
  • VSCode TypeScript 问题Matcher `$tsc-watch` 未观看

    我试图避免使用watch true in a tsconfig json配置 通过 VSCode 的任务 我正在使用基本问题匹配器 tsc watch但它没有启动tsc构建时处于监视模式 我正在添加gulp支持 我看到有gulp watch
  • Typescript:通用到特定类型

    我有一个通用类型 type GenericType key string prop1 string prop2 string prop3 number 我使用通用类型来帮助构建 类型检查我创建的新对象 const Obj1 GenericT
  • TypeScript 枚举到对象数组

    我有一个这样定义的枚举 export enum GoalProgressMeasurements Percentage 1 Numeric Target 2 Completed Tasks 3 Average Milestone Progr
  • 在 Angular 中使用 Vue 组件

    我有一个用 Vue 构建的项目 我想在 Angular 应用程序中重用 Vue 应用程序中的组件 这样我就不必从头开始重建每个组件 我在medium上看到了这个教程 如何在 Angular 应用程序中使用 Vue 2 0 组件 https
  • 重定向到 Angular2 中 @CanActivate 内的不同组件

    有什么方法可以重定向到 Angular2 中的 CanActivate 不同的组件吗 截至今天 使用最新的 angular router 3 0 0 rc 1 这里有一些关于如何通过以下方式做到这一点的参考 CanActivate路线守卫
  • TypeScript 编译速度极慢 > 12 秒

    只是把它放在那里看看其他人是否也遇到这个问题 我已经使用 webpack 作为我的构建工具 使用 typescript 构建了一个 Angular 2 应用程序 一切都运行良好 但是我注意到 typescript 编译超级超级慢 我现在只有
  • 来自 JSON 的 Angular 8 动态表单

    我正在尝试从 JSON 模式递归生成动态表单 但我正在努力解决找不到表单控件的问题 这是代码示例 我收到这个错误 错误错误 找不到名称为 createdAt 的控件 我尝试了不同的方法 但仍然存在问题 我知道我错过了一些东西 所以请帮忙 任
  • 如何在 Angular 4 项目中使用 ActiveXObject

    我正在尝试使用 ActiveXObject 如下所示 getActiveXObject pdfCtrl return new ActiveXObject pdfCtrl checkPDF let plugin null if this ge
  • Angular 4 与 Webpack 2,动态加载脚本

    我刚刚在一个项目中尝试使用 Angular 4 和 Webpack 2 我试图在 ngOnInit 期间加载一些脚本 但遇到了一些问题 问题1 我的 ngOnInit 中有以下代码 System import node modules jq
  • 模块“node_modules/@angular/core/core”没有导出成员“OpaqueToken”

    node modules ionic cloud angular dist es5 index d ts 打字稿错误 模块 home ritzylab ionic code 20 11 munshiji247 ionic node modu
  • 如何在 angular2 中触发表单验证器?

    我创建了 angular2 Web 应用程序 我已经使用表单生成器实现了一个自定义验证器 它将在提交时工作 但我需要在其他表单控件值更改中动态触发验证 请任何人提出建议来实现这一目标 谢谢 尝试这个 this RegisterForm1 c
  • Angular 2在实例化子组件之前解析根组件

    当我刷新网络应用程序时 我希望它在实例化任何组件或路由之前请求潜在的登录用户数据 如果找到用户的数据 我想将其注入到我的所有其他子组件所依赖的服务中 场景 假设我有 3 个组件 应用程序 ROOT 主页和关于 如果我将此代码放在 About
  • 角度 2 中的动态 styleUrls?

    是否可以将样式表的 url 动态注入到组件中 就像是 styleUrls stylesheet1 css this additionalUrls 或者 一厢情愿并注意这只是假代码 export class MyComponent imple
  • 是否可以使用打字稿映射类型来创建接口的非函数属性类型?

    所以我正在研究 Typescript 的映射类型 是否可以创建一个接口来包装另一种类型 从而从原始类型中删除函数 例如 interface Person name string age number speak void type Data
  • 装饰器可以更改方法的签名吗?

    考虑一个函数 function handleFoo foo number 我想要一个解析 foo 的装饰器 例如 fetchFromApi foo function handleFoo foo number where fetchFromA
  • 如何更改订阅值?使用 rxJS

    我正在创建一个计时器 需要你的帮助 我刚刚学习 Angular 和 rxJS 对此我有一些疑问 我正在创建一个具有启动 停止 暂停 重置功能的计时器 并且 btn Reset 必须将我的计时器 暂停 到 300 毫秒 怎么做 D 我的启动定

随机推荐