打字稿参数类型引用另一个参数

时间:2021-05-13 06:49:19

标签: typescript

我有一个这样的界面

interface IObject {
   a: string;
   b: number;
   c: string[];
}

我想构建一个这样的函数

function fancyName(obj: IObject, key: keyof IObject, value: any)

目前,您可以将任何您想要的值转化为价值。但我想做这样的事情

  • 如果 keya,则 value 类型必须为字符串
  • 如果 keyb,则 value 类型必须为数字
  • 等等

我试过像这样value: IObject[key],但它不起作用。因为我认为它不理解我尝试引用另一个参数。我怎样才能在 TS 中实现这一点?

1 个答案:

答案 0 :(得分:0)

感谢 Jonrsharpe 让我想到了泛型类型。这就是我实现它的方式

function fancyName<K extends keyof T, T = IProduct>(object: T, key: K, value: T[K])