MST

星途 面试题库

面试题:TypeScript 泛型函数的性能优化考量

假设有一个泛型函数 `mergeObjects`,用于合并两个对象。它接收两个对象作为参数,并返回合并后的对象。在实现这个函数的过程中,如何利用类型推断和泛型约束来优化性能,避免不必要的类型转换?请给出代码实现,并解释优化思路。
22.9万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试

代码实现

function mergeObjects<T extends object, U extends object>(obj1: T, obj2: U): T & U {
    return {...obj1, ...obj2 };
}

优化思路

  1. 类型推断:通过泛型 TU,TypeScript 可以根据传入的实际对象类型进行自动类型推断。这样无需手动指定返回类型,减少了冗余代码。例如,当调用 mergeObjects({a: 1}, {b: '2'}) 时,TypeScript 能推断出 T{a: number}U{b: string},进而推断出返回类型为 {a: number} & {b: string},即 {a: number, b: string}
  2. 泛型约束:使用 T extends objectU extends object 约束了泛型 TU 必须是对象类型。这保证了传入的参数是对象,避免了传入非对象类型(如 nullundefined 等)导致的运行时错误。同时,在对象展开操作 {...obj1, ...obj2 } 中,由于约束了参数为对象,所以这种操作是类型安全的,无需进行额外的类型转换检查,从而优化了性能。