属性 使用 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,
        
      }
    }
  },

错误显示 属性 'id' 缺少类型 partNumber

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

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

下划线 partmaster.id 和 part.id 错误如下:

'number | undefined' 类型的参数不能分配给 'number' 类型的参数。 类型 'undefined' 不可分配给类型 'number'.

这个问题确实需要更多细节,包括定义 editRow 函数和调用 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 并在代码中处理 undefined 情况。
  • 在你去掉“?”的情况下从 id,我首先要检查的是您的 GraphQL 查询实际上确实请求了 id 字段。 GraphQL 的要点是只请求你需要的东西,所以你的同事可能没有将这个字段添加到请求中。如果不是那样,如果没有上面提到的额外细节,我将无法提供帮助。