Javascript 如何链接TypeScript中的函数参数类型?

Javascript 如何链接TypeScript中的函数参数类型?,javascript,typescript,types,Javascript,Typescript,Types,我有一个值为string和number类型的对象: 我有一个函数,用于更改对象,其中一个参数作为字段索引,另一个参数作为字段值: const person = {name: "Fred", age: "30"}; const changePerson = (index: keyof Person, value: string | number): void => { person[index] = value; } 问题是,在TypeScript看来,索引可以是名称,值可以是数字,

我有一个值为string和number类型的对象:

我有一个函数,用于更改对象,其中一个参数作为字段索引,另一个参数作为字段值:

const person = {name: "Fred", age: "30"};

const changePerson = (index: keyof Person, value: string | number): void => {
  person[index] = value;
}
问题是,在TypeScript看来,索引可以是名称,值可以是数字,但这永远不会发生。我不知道如何链接索引和值来告诉TypeScript类型是以特定方式链接的

有人能帮忙吗

我可以通过使用case语句来消除错误,但这不会像TypeScript通常所做的那样进行传输:

const changePerson = (index: keyof Person, value: string | number): void => {
  switch(index) {
    case "name":
      person[index] = value as string;
      break;

    default:
      person[index] = value as number;
  }
}

您可以使用泛型实现这一点: 索引:T,值:人[T]:无效

这基本上告诉类型系统,第二个参数必须是第一个参数在类型上指向的任何参数


这正是我需要的完整示例!非常感谢你!
const changePerson = (index: keyof Person, value: string | number): void => {
  switch(index) {
    case "name":
      person[index] = value as string;
      break;

    default:
      person[index] = value as number;
  }
}