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

TypeScript如何动态获取类属性类型 实现函数按入参返回精确类型

解决方案

可以通过泛型结合TypeScript索引类型特性实现精确类型推导,具体修改步骤如下:


第一步:导出Tables类型

在db.ts文件中为Tables接口添加导出声明,方便外部使用该类型定义:

// db.ts 调整部分
export interface Tables {
  [Databases.db1]: SomeType1;
  [Databases.db2]: SomeType2;
}

第二步:改写useDB为泛型函数

通过泛型约束入参类型,同时绑定返回值与入参的对应关系:

import MyInstance, { Databases, Tables } from './db';

// 泛型T约束为Databases枚举的子集,返回值对应Tables的索引类型
export const useDB = <T extends Databases>(table: T): Tables[T] => {
  const currentTable = MyInstance.tables[table];
  return currentTable;
};

效果验证

调用时会自动根据传入的枚举值推导对应返回类型:

const db1Table = useDB(Databases.db1)
// db1Table 类型自动推导为 SomeType1,可直接安全访问 id1、data1 属性

const db2Table = useDB(Databases.db2)
// db2Table 类型自动推导为 SomeType2,可直接安全访问 id2、data2 属性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 07:39:03