MST

星途 面试题库

面试题:TypeScript泛型函数实现深度克隆

编写一个TypeScript泛型函数 `deepClone`,用于深度克隆任何类型的对象。该函数需要处理普通对象、数组、日期、正则表达式等常见数据类型,不能使用 `JSON.parse(JSON.stringify())` 这种简单方法。例如:`const obj = { a: 1, b: [2, 3], c: new Date() }; const clonedObj = deepClone(obj); // 克隆后的对象应与原对象内容相同,但不是同一个引用`
45.3万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
function deepClone<T>(value: T): T {
    if (Array.isArray(value)) {
        return value.map(deepClone) as unknown as T;
    } else if (value instanceof Date) {
        return new Date(value.getTime()) as unknown as T;
    } else if (value instanceof RegExp) {
        return new RegExp(value.source, value.flags) as unknown as T;
    } else if (typeof value === 'object' && value!== null) {
        const result: Record<string, unknown> = {};
        for (const key in value) {
            if (Object.prototype.hasOwnProperty.call(value, key)) {
                result[key] = deepClone((value as Record<string, unknown>)[key]);
            }
        }
        return result as unknown as T;
    } else {
        return value;
    }
}