繁体   English   中英

使用 GraphQL 和 Typescript 的类型 {`id`} 中缺少属性“id”

[英]Property 'id' is missing in type {`id`} using GraphQL and Typescript

我是编码和 Typescript 的新手,所以请原谅我缺乏知识。 我试图让我的应用程序与我的 api 交谈,但由于我的主 ID 键有一个“?”而出现以下错误。 如下:

export interface PartMaster {
    id?: number;
 }

当我删除“?” 我得到一个不同的错误,当我保留它时,我也会得到一个不同的错误。 我在 GraphQL 中遗漏了什么吗? 我主要是前端开发人员,我的同事已经完成了所有的 GraphQL 管理,但我今天需要自己解决这个问题,因此我们将不胜感激。

这是当我有“?”时它不喜欢的代码在 ID 中:

computed: {
    part(): PartMaster {
      return {
        partNumber: this.partNumber,
        
      }
    }
  },

错误读取类型 partNumber 中缺少的属性“id”

这是我包含“?”时的错误:

editRow(partMaster.id)
editRow(part.id)

它强调了 partmaster.id 和 part.id 并出现以下错误:

'number | 类型的参数 undefined' 不能分配给“number”类型的参数。 类型“未定义”不可分配给类型“数字”。

这个问题确实需要更多细节,包括定义editRow function 和调用GraphQL 查询的部分,以及id未标记为可选时的错误文本。 但是,我还没有足够的声誉来发表评论,因此将在答案中解决这个问题。

有了给定的信息,我可以猜到:

  • 您给出的最后一条错误消息( Argument of type 'number | undefined' is not assignable to parameter of type 'number'. Type 'undefined' is not assignable to type 'number'. )可能是因为editRow需要一个类型的参数number 通过将id标记为可选,您表明它有时可能是undefined 要么不将其标记为可选,要么让editRow接受number | undefined number | undefined并处理代码中undefined的情况。
  • 在删除“?”的情况下从 id 开始,我首先要检查的是您的 GraphQL 查询实际上确实请求了id字段。 GraphQL 的要点是仅请求您需要的内容,因此您的同事可能没有将此字段添加到请求中。 如果不是这样,如果没有上面提到的额外细节,我将无法提供帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM