typescript泛型函数索引约束

时间:2017-09-30 15:08:45

标签: function typescript generics

有没有办法指明行为符合这个建议的东西?

function fn<T, U extends keyof T, T[U] extends number>()

我不能让“T [U]扩展数字”部分工作。

1 个答案:

答案 0 :(得分:1)

这个怎么样?

function fn<T extends Record<U, number>, U extends keyof T>(t: T, u: U): number {
  return t[u];
}

T extends Record<U, number>你基本上说T[U]存在并且类型为number(或某种子类型):

fn({ name: 'fred', age: 40 }, 'age');  // okay
fn({ name: 'fred', age: 40 }, 'name');  // error
fn({ name: 'fred', age: 40 }, 'oops');  // error

这对你有用吗?