MST

星途 面试题库

面试题:TypeScript泛型与extends关键字的深度结合

实现一个泛型函数`copyProps`,它接受两个类型参数`T`和`U`,其中`U`必须是`T`的子类型(通过`extends`关键字约束)。该函数的作用是将源对象(类型为`U`)的所有可枚举属性复制到目标对象(类型为`T`)上,并返回目标对象。要求使用类型断言和索引类型来确保类型的正确性。
39.5万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
function copyProps<T, U extends T>(target: T, source: U): T {
    for (const key in source) {
        if (Object.prototype.hasOwnProperty.call(source, key)) {
            target[key as keyof T] = source[key as keyof U];
        }
    }
    return target;
}