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

如何在TypeScript中让方法返回类属性的动态类型?

实现方法返回类属性的动态类型

你可以通过给类方法添加泛型参数来精准绑定传入的属性名,让TypeScript自动推导对应属性的类型作为返回值类型,下面是优化后的实现:

interface IObject {
  [key: string]: any
}

class ClassX<T extends IObject> {
  // 泛型K约束为T的属性键,直接用T[K]作为返回类型
  public methodX<K extends keyof T>(column: K): T[K] {
    // 实际业务中如果实例持有对应数据,比如this.data = 传入的T类型数据,可直接返回 this.data[column]
    // 以下是类型演示用的断言,实际根据业务逻辑替换
    return null as unknown as T[K]
  }
}

// 测试示例
const varX = new ClassX<{ property: string }>()
const resX = varX.methodX('property') // 类型自动推导为 string

const varY = new ClassX<{ property: number, username: boolean }>()
const resY = varY.methodX('property') // 类型自动推导为 number
const resZ = varY.methodX('username') // 类型自动推导为 boolean

关键说明

  • 给方法单独声明泛型K并约束为keyof T,能让TypeScript把传入的属性名推导为字面量类型(比如'property'而非string),从而精准返回T[K]对应的属性类型。
  • 如果你的类实例中实际存储了T类型的数据(比如有一个private data: T成员),直接返回this.data[column]即可,不需要额外的类型断言,TypeScript会自动识别返回类型。

内容的提问来源于stack exchange,提问作者Rizky-Iqbal36

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 06:28:13