function pick<T, K extends keyof T>(obj: T, keys: K[]): Pick<T, K> {
const r = {} as Pick<T, K>
for (const k of keys) r[k] = obj[k]
return r
}pick<T, K> uses keyof and Pick<T, K> to return a type-safe subset of an object.
Challenge: Implement pick<T, K extends keyof T>(obj: T, key: K): T[K] returning the value at key.
pick({ a: 1, b: 2 }, 'a') // β 1
pick({ name: 'Alice', age: 30 }, 'name') // β 'Alice'