实现泛型 ``` const getValue: FN = (obj, key) => { return obj[key] } getValue({a: 1}, 'a') getValue({a: 1}, 'b') // error getValue('1', 'b') // error type FN<T, K extends keyof T> = (obj: T, key: K) => T[K]; ```