You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TypeScript能否扩展接口并让type属性继承父类型同时新增值?

问题解答

可以实现你要的需求,但你写的super.type语法在TypeScript接口定义中不被支持,下面是两种可行的实现方式:

方法一:提前抽离类型别名

先把父接口的type属性类型定义成单独的类型别名,后续直接复用:

type UpdateType = 'STATUS_UPDATE';

export interface Update {
  type: UpdateType;
}

export interface HttpUpdate extends Update {
  type: 'HTTP_UPDATE' | UpdateType;
}

方法二:使用索引访问类型

直接通过Update['type']获取父接口的type属性类型,再与新取值组成联合类型:

export interface Update {
  type: 'STATUS_UPDATE';
}

export interface HttpUpdate extends Update {
  type: 'HTTP_UPDATE' | Update['type'];
}

补充说明

TypeScript中,super关键字仅用于类的方法内引用父类的成员,接口扩展场景下无法用它来引用父接口的属性类型。而索引访问类型T['key']可以直接获取接口T中key属性的类型,刚好满足你的需求。

内容的提问来源于stack exchange,提问作者matthias

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 15:37:11