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

如何用带类泛型、方法无泛型参数的类封装含泛型方法的类?

解决方案:将父类方法泛型迁移至子类类泛型

首先修正你的Smart类实现,解决返回值缺失和泛型传递的问题:

class Stupid {
  private cache: Map<any, any> = new Map();
  get<T>(key: string): T {
    return this.cache.get(key);
  };
}

class Smart<T> extends Stupid {
  get(key: string): T {
    // 显式传入子类的泛型参数T给父类方法,并返回结果
    return super.get<T>(key);
  }
}

关键点说明:

  • 原代码中Smart.get方法漏掉了return语句,导致返回值类型不符合预期,必须补上才能正确返回父类方法的结果
  • 通过super.get<T>(key)将子类的类泛型参数T传递给父类的方法泛型,实现了「把方法泛型移到封装类上」的需求
  • 由于父类Stupid的缓存是Map<any, any>,运行时不会做类型校验,Smart类的泛型T仅提供编译时类型提示,需要自行保证缓存中对应key的值类型匹配T

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 13:44:52