部分类型的参数不能分配给类型的参数

时间:2020-08-20 14:57:47

标签: javascript reactjs typescript

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

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

let pDt: Partial<details> = {IsActive: false};

并且当我尝试将其以details作为参数的方法之一传递给它时,出现以下问题“ Partial类型的参数无法分配给'detail'类型的参数”。

这是怎么了?如何纠正?

3 个答案:

答案 0 :(得分:2)

Partial类型的参数不能分配给'detail'类型的参数

您不能将类型的Partial分配给您从中创建了Partial的原始类型。

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

let partialDetails: Partial<Details> = {IsActive: false};
let details: Details = partialDetails // error

Playground

这是有道理的,因为Details期望所有属性都有一个值,但是Partial<Details>可以省略这些属性的任何。这会使部分内容与您成为部分内容的while类型不兼容。

没有简单的“解决方法”。这取决于您应用的逻辑。如果您有一个期望整个Details的函数,那么您必须将其整个Details传递给它,那么Partial<Details>就不会。

答案 1 :(得分:0)

如果您要使用Partial,可以按照以下方式进行投放:

library(data.table)
setDT(output)[, .(duration = .N), 
  by = .(start = as.IDate(timestamp),VAV =  van_d, 
    conditions = cut(ratio, breaks=c(0,0.7,0.8,0.9,1,100),
             labels=c("0-0.7","0.7-0.8","0.8-0.9","0.9-1",">1"))]

答案 2 :(得分:0)

如果您打算在 details 之后填写额外的字段,这是一种非常常见的 JavaScript 模式,请执行以下操作:

let pDt = {IsActive: false} as details;

Typescript 在提供帮助时非常棒,但如果你做得太过火,它通常也很容易受到阻碍。