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

如何自动获取TypeScript类的父类类型?如从Bar类得到Foo类

从子类自动推导父类类型的实现方案

先看你的示例代码:

class Foo {
  x = 1;
  y = 2;
}
class Bar extends Foo {
  override x = 11;
  z = 3;
}

完全可以实现Superclass<Bar>等价于Foo的效果,用TypeScript的条件类型就能做到。你只需要定义一个Superclass工具类型:

type Superclass<T> = T extends typeof extends infer U ? U : never;

测试这个类型:

type ParentType = Superclass<Bar>; // ParentType 的类型就是 typeof Foo,和 Foo 类的类型完全等价

原理说明

这个类型的核心是利用TypeScript的条件类型推断:当T是一个继承了其他类的子类构造函数时,T extends typeof extends infer U会把T的直接父类构造函数推断为U,最终返回这个U类型。

如果子类是多层继承(比如class Baz extends Bar),Superclass<Baz>会直接返回Bar的类型——也就是它的直接父类,而非最顶层的Foo。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 02:08:20