【发布时间】:2022-02-23 00:37:40
【问题描述】:
如果我们有这些类型:
interface Person {
name: string;
}
interface Agent extends Person {
code: number;
}
并拥有此代码:
const agent: Agent = {
name: 'name',
code: 123
}
如何将类型 Agent 转换为 Person 并删除代码字段?当我尝试这样做时:
const person: Person = agent as Person
console.log(person) // Still contains the fields of agent
这是一个简单的例子,但在我的真实用例中,该对象有更多的字段。我也试过:
person: Person = {
...agent
}
我看过的另一篇文章不适用于我的情况: Restrict type by super class in interface.
【问题讨论】:
-
你见过this question吗?
-
@DavidScholz 哦,哇,我用谷歌搜索了很多,但没有找到,谢谢
-
如果Agent的额外属性数量有限,可以
const { code, ...person} = agent -
@www.admiraalit.nl 是的,这就是我推测我可以做的,但对于我的用例来说,它使它有点不切实际/烦人。我总是可以只做一次并创建一种方法来进行转换。谢谢!
标签: typescript