面试题答案
一键面试实现思路
- 定义联合接口:用于描述数组中可能出现的多种数据类型。
- 使用泛型:通过泛型来处理不同类型的数组元素,保证函数的通用性。
- 类型判断与处理:在函数内部通过
typeof
等方式判断元素类型,并进行相应的处理。 - 准确返回值类型推导:根据处理逻辑,确保返回值类型能准确反映处理结果。
代码实现
// 定义联合接口
interface StringOrNumber {
type: 'string' | 'number';
value: string | number;
}
// 通用函数
function processArray<T extends StringOrNumber[]>(arr: T): (string | number)[] {
return arr.map((item) => {
if (item.type === 'string') {
return item.value.toUpperCase();
} else {
return item.value * 2;
}
});
}
// 示例使用
const array: StringOrNumber[] = [
{ type: 'string', value: 'hello' },
{ type: 'number', value: 5 }
];
const result = processArray(array);
console.log(result);
上述代码中,首先定义了一个联合接口 StringOrNumber
,描述数组元素可能的类型结构。然后通过泛型 T
来定义函数参数 arr
,确保其元素类型符合联合接口。在函数内部,通过判断 type
属性来决定对元素的处理逻辑,最后返回经过处理的结果数组,类型也根据处理逻辑准确推导。