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

TypeScript:如何从实例在运行时泛型获取所属类引用

解决方案:动态获取实例所属类的静态TYPE属性

我来帮你搞定这个问题!你需要让父类的type getter动态返回当前实例所属类的静态TYPE属性,而不是固定引用父类的。核心思路是利用this.constructor获取实例的实际构造函数,进而访问它的静态属性。

修改后的父类代码

export class TypedAction implements Action { 
  static TYPE = [NONE]; 
  get type(): string { 
    // 通过this.constructor获取当前实例的构造函数,断言类型以访问静态TYPE
    return (this.constructor as typeof TypedAction).TYPE; 
  } 
}

为什么这样可行?

  • this.constructor会指向当前实例的实际构造函数:当你创建LoginRequestAction的实例时,this.constructor就是LoginRequestAction类本身,而非父类TypedAction。
  • 类型断言as typeof TypedAction是为了让TypeScript识别这个构造函数拥有TYPE静态属性,避免编译报错。因为TypeScript默认认为this.constructor是Function类型,无法直接访问静态属性。

子类验证

对于你的LoginRequestAction子类,当你创建实例并访问type属性时:

const loginAction = new LoginRequestAction({ username: 'test', password: '123' });
console.log(loginAction.type); // 输出: '[Auth] Login requested'

完全符合你要求的“子类返回自身类的TYPE静态属性”的逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:34:36