gpt4 book ai didi

Typescript - 使用 Object.entries 动态更新对象属性

转载 作者:行者123 更新时间:2023-12-04 11:50:27 38 4
gpt4 key购买 nike

我想实现一个函数来循环对象的属性并将更新应用于相同类型的另一个对象。

interface Car {
tires: number;
name: string;
}

function updateCar(car: Car, updates: Partial<Car>) {
Object.entries(updates).forEach(([key, value]) => {
car[key] = value;
})
}
这里的问题是有一个错误
No index signature with a parameter of type 'string' was found on type 'Car'
将 key 转换为 keyof Car 时它有效,但只要使用 "noImplicitAny": true又是一个错误
Type 'string | number' is not assignable to type 'never'
有没有办法以类型安全的方式解决这个问题。将汽车转换到任何位置都可以,但我想避免它。
非常感谢
贝尼

最佳答案

这个问题激发了我重新审视我遇到的类似问题。
虽然不是您的问题的直接模拟(即这是一个返回 new 对象而不是修改调用者提供的参数的纯函数),但这里有一个更新函数,它通过使用 object-spread 而不是 Object.entries() 函数来保留类型安全性做它的工作:

function updateFromPartial<T>(obj: T, updates: Partial<T>):T { 
return {...obj, ...updates};
}

关于Typescript - 使用 Object.entries 动态更新对象属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63576130/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com