面试题答案
一键面试1. 类型推断不准确问题分析
在TypeScript中,类型推断是基于上下文的。当定义combine
函数时,如果不明确指定泛型类型参数,TypeScript可能无法准确推断出联合类型。例如,当传递两个数组时,它可能无法将元素类型正确联合起来。这就需要显式地指定泛型参数,以确保类型推断的准确性。
2. 泛型约束与函数重载的冲突分析
泛型约束用于限制泛型类型参数的范围,而函数重载用于根据不同的参数类型提供不同的函数实现。在combine
函数中,如果同时使用泛型约束和函数重载,可能会产生冲突。比如,在定义重载签名时,可能会与泛型约束的灵活性产生矛盾,导致难以准确表达函数的多种行为。
3. TypeScript代码解决方案
function combine<T, U>(arr1: T[], arr2: U[]): (T | U)[] {
return [...arr1, ...arr2];
}
在上述代码中:
- 使用泛型
T
和U
分别表示两个输入数组的元素类型。 - 函数返回类型是
(T | U)[]
,即两个数组元素类型的联合类型。 - 通过展开运算符
...
将两个数组合并为一个数组。这样就解决了类型推断和确保联合类型的问题,同时避免了泛型约束与函数重载可能产生的冲突,因为这里不需要函数重载就可以满足需求。