在TypeScript中设置循环中的对象字段

在TypeScript中设置循环中的对象字段,typescript,typing,Typescript,Typing,我有一个Feature对象(最初来自数据库,但在下面的代码中我简化了它),我想更新它: type Feature = {id: number, name: string, deletedAt?: Date} const newData: Partial<Feature> & {id: number} = { id: 1, deletedAt: new Date() }; const oldFeature: Feature = { id: 1, name: '

我有一个Feature对象(最初来自数据库,但在下面的代码中我简化了它),我想更新它:

type Feature = {id: number, name: string, deletedAt?: Date}

const newData: Partial<Feature> & {id: number} = {
    id: 1, deletedAt: new Date()
};
const oldFeature: Feature = {
    id: 1, name: 'Abc', deletedAt: undefined
};

for (const key of Object.keys(newData) as (keyof Feature)[]) {
    oldFeature[key] = newData[key];
}
type Feature={id:number,name:string,deletedAt?:Date}
const newData:Partial&{id:number}={
id:1,删除日期:新日期()
};
常量特征:特征={
id:1,名称:“Abc”,删除日期:未定义
};
for(Object.keys(newData)的常量键为(keyof Feature)[]{
oldFeature[键]=新数据[键];
}
oldFeature[key]
newData[key]
都属于
string | number | Date |未定义的类型
。但当然,对于两个对象中的每个给定键,类型将是上述类型之一,并且将是相同的。尽管如此,我还是不允许进行赋值
oldFeature[key]=newData[key]
,因为它给出了一个错误:

类型“string | number | Date | undefined”不可分配给类型“never”。
类型“未定义”不可分配给类型“从不”。ts(2322)


为什么??以及如何正确制作?

请分享min可复制example@captain-yossarian I修改了问题,在
oldFeature
中显示
name
属性的类型为
string
,在
newData
中显示类型为
string |未定义
。它们不兼容。您不能将
string |未定义的
分配给
strng