首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TypeScript将子类型转换为超级类型并删除额外字段

TypeScript将子类型转换为超级类型并删除额外字段
EN

Stack Overflow用户
提问于 2022-02-22 13:46:00
回答 1查看 342关注 0票数 1

如果我们有这样的类型:

代码语言:javascript
复制
interface Person {
  name: string;
}
interface Agent extends Person {
  code: number;
}

有这样的代码:

代码语言:javascript
复制
const agent: Agent = {
  name: 'name',
  code: 123
}

如何将类型Agent转换为Person并删除代码字段?当我尝试这样做的时候:

代码语言:javascript
复制
const person: Person = agent as Person
console.log(person) // Still contains the fields of agent

这是一个简单的例子,但在我的实际使用中,对象有更多的字段。我也试过:

代码语言:javascript
复制
person: Person = {
...agent
}

我看过的另一篇文章不适用于我的案例:在接口中用超类限制类型

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-22 13:58:25

铸造并不意味着铸件内部的真正价值会发生变化。开发人员应该告诉TypeScript“相信我,我知道里面是什么”。它只有在开发过程中才有意义,而不是在运行时。

对于开发部分,也许实用程序类型会有所帮助。例如,您可以这样做(如果您想在Agent中保留Person中的某些字段):

代码语言:javascript
复制
type Person = Pick<Agent, "name"|"address">;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71222416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档