gpt4 book ai didi

typescript - 在 Typescript 中从一种类型转换为另一种类型的最佳实践方式

转载 作者:搜寻专家 更新时间:2023-10-30 21:01:06 24 4
gpt4 key购买 nike

如果我有 2 个接口(interface):

interface Person{
name: string;
}

interface Employee extends Person{
employeeId: string;
}

我想将一个人转换为 en Employee:

function employPerson(person: Person, id: string): Employee

什么是最好的方法?

我认为这样做的标准方法是:

function employPerson(person: Person, id: string): Employee{
const employee = person as Employee

employee.employeeId = id;

return employee;
}

哪个有效,但这个也有效:

function employPerson(person: Person, id: string): Employee{
const employee = person as Employee

return employee;
}

这显然是不对的。

我喜欢这种方法:

function employPerson(person: Person, id: string): Employee{
return {
...person,
employeeId: id
};
}

这确保我们拥有所有正确的属性,如果我更改 Employee 接口(interface)以添加新属性,上述代码将正确出错。问题是我返回了一个不同的对象——它是一个克隆。

如何在仍然使用完全类型安全的情况下向现有对象添加属性?

谢谢

最佳答案

Object.assign 怎么样?

function employPerson(person: Person, id: string): Employee {
return Object.assign(person, {
employeeId: id
});
}

关于typescript - 在 Typescript 中从一种类型转换为另一种类型的最佳实践方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45502366/

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