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

TypeScript中能否推断类实例取值函数的返回值具体类型?

实现保留具体属性类型的TypeScript取值函数

你当前的取值函数因为只对目标对象做了泛型约束,键参数仅声明为keyof T,返回值只能推断为所有属性类型的联合。要让TypeScript在传入固定键名时,精确返回对应属性的类型,只需要给键也加上泛型约束即可:

修改后的函数代码:

function getValueFromInstance<T, K extends keyof T>(target: T, key: K) {
  return target[key];
}

原理说明

新增的泛型参数K被约束为keyof T的子集,当你传入固定的键名(比如"someNumber")时,TypeScript会自动推断出K的具体类型,进而返回精确的T[K]类型,和直接访问实例属性的类型推断效果完全一致。

使用示例

class Example {
    someNumber:number = 1;
    someString:string = "test";
}

const example = new Example();
const numValue = getValueFromInstance(example, "someNumber"); // type = number
const strValue = getValueFromInstance(example, "someString"); // type = string

如果传入的是类型为keyof T的变量,返回值依然会是联合类型(这符合预期,因为变量可能指向任意属性):

let randomKey: keyof Example = "someNumber";
const mixedValue = getValueFromInstance(example, randomKey); // type = string | number

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 15:32:03