Typescript 是否可以将一个参数的类型用于另一个参数?

Typescript 是否可以将一个参数的类型用于另一个参数?,typescript,Typescript,假设我有一个函数,用于将更新发送到存储: updateData<T>(entity: T, prop: keyof T, value: any): void { const action: Action = new SaveAction(entity, {[prop]: value}); store.dispatch(action); } 通过确保value参数只接受与属性对应的类型的值,是否可以使此函数更安全 使用上面的示例,我希望TSLint或Typescript编译器

假设我有一个函数,用于将更新发送到存储:

updateData<T>(entity: T, prop: keyof T, value: any): void {
  const action: Action = new SaveAction(entity, {[prop]: value});
  store.dispatch(action);
}
通过确保value参数只接受与属性对应的类型的值,是否可以使此函数更安全

使用上面的示例,我希望TSLint或Typescript编译器可以避免我执行以下操作

updateData<Question>(someQuestion, 'score', 'some string');

我想你要找的是:

updateData<T, K extends keyof T>(entity: T, prop: K, value: T[K]): void {
  const action: Action = new SaveAction(entity, {[prop]: value});
  store.dispatch(action);
}
希望有帮助;祝你好运

updateData<T, K extends keyof T>(entity: T, prop: K, value: T[K]): void {
  const action: Action = new SaveAction(entity, {[prop]: value});
  store.dispatch(action);
}
updateData(someQuestion, 'score', 123); // okay
updateData(someQuestion, 'score', 'some string'); // error: 
// Argument of type '"some string"' is not assignable to parameter of type 'number'.