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

TypeScript:能否用keyof T类型参数约束另一参数为T[key]类型?

TypeScript 关联函数参数类型的实现方法

当然可以实现这种参数类型的关联约束,核心是用泛型绑定两个参数的类型关系:

type MyType = {
  key1: string;
  key2: object;
};

// 用泛型K约束param1的键类型,param2自动对应该键的属性类型
function myFunc<K extends keyof MyType>(param1: K, param2: MyType[K]) {
  // 这里可以编写你的函数逻辑
}

效果说明

  • 当传入param1: 'key1'时,param2会被自动约束为string类型,传入其他类型(比如数字)会直接触发TypeScript类型报错;
  • 当传入param1: 'key2'时,param2会被约束为object类型,只有符合预期的类型才能通过检查。

这样就实现了你想要的效果:让param2的类型跟随param1指定的键,动态关联到MyType对应属性的类型。

内容的提问来源于stack exchange,提问作者noel.felix

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 20:57:17