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
相关产品推荐
相关产品推荐

