有没有办法指明行为符合这个建议的东西?
function fn<T, U extends keyof T, T[U] extends number>()
我不能让“T [U]扩展数字”部分工作。
答案 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
这对你有用吗?