类型为partial的参数不可分配给类型为参数的参数

Lar*_*ara 20 javascript typescript reactjs

我正在尝试更新 TypeScript 中接口之一的部分属性,如下所示

interface details{
  name: string,
  phonenumber: number,
  IsActive: boolean
}

let pDt: Partial<details> = {IsActive: false};
Run Code Online (Sandbox Code Playgroud)

当我试图将其作为参数的方法之一传递给它时details,它给出了以下问题“ Partial 类型的参数不可分配给‘detail’类型的参数”。

这里出了什么问题以及如何纠正?

JBD*_*JBD 15

在您的情况下,如果您想使用 Partial,您可以像这样进行转换:

interface Details{
  name: string,
  phonenumber: number,
  IsActive: boolean
}

let partialDetails: Partial<Details> = {IsActive: false};
let details: Details = partialDetails as Details;
Run Code Online (Sandbox Code Playgroud)


Ale*_*yne 14

Partial 类型的参数不可分配给“detail”类型的参数

您无法将某种类型的分部分配给创建分部的原始类型。

interface Details{
  name: string,
  phonenumber: number,
  IsActive: boolean
}

let partialDetails: Partial<Details> = {IsActive: false};
let details: Details = partialDetails // error
Run Code Online (Sandbox Code Playgroud)

操场

这是有道理的,因为Details期望所有属性都有值,但Partial<Details>可以省略其中任何属性。这使得部分与您制作部分的整个类型不兼容。

“解决”这个问题并不容易。这取决于您的应用程序的逻辑。如果您有一个需要整体的函数,Details那么您必须将其传递给整个Details,而 aPartial<Details>则不行。