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
相关产品推荐
相关产品推荐

