我正在尝试如下更新TypeScript中接口之一的部分属性
interface details{
name: string,
phonenumber: number,
IsActive: boolean
}
let pDt: Partial<details> = {IsActive: false};
并且当我尝试将其以details
作为参数的方法之一传递给它时,出现以下问题“ Partial类型的参数无法分配给'detail'类型的参数”。
这是怎么了?如何纠正?
答案 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
这是有道理的,因为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 在提供帮助时非常棒,但如果你做得太过火,它通常也很容易受到阻碍。