MST
星途 面试题库

面试题:TypeScript泛型约束与类型推断的结合应用

编写一个泛型函数 `pick`,它接受一个对象和一个字符串数组作为参数。该函数从对象中挑选出字符串数组中指定的属性,并返回一个新对象。例如 `pick({name: 'John', age: 30}, ['name'])` 应返回 `{name: 'John'}`。请通过泛型约束和类型推断来确保函数的类型安全,使得返回的对象类型能精确匹配挑选出的属性。
38.7万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
function pick<T extends object, K extends keyof T>(obj: T, keys: K[]): Pick<T, K> {
    const result: Partial<T> = {};
    for (const key of keys) {
        if (obj && Object.prototype.hasOwnProperty.call(obj, key)) {
            result[key] = obj[key];
        }
    }
    return result as Pick<T, K>;
}