2017-09-30 91 views

回答

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 

這是否對你的工作?