MST

星途 面试题库

面试题:TypeScript接口联合与联合接口在类型推导与泛型中的深度应用

实现一个通用的函数,该函数接受一个数组,数组元素可以是多种类型(通过联合接口定义)。函数需要根据元素的具体类型进行不同的处理逻辑,并且利用接口联合来增强类型推导,使得函数返回值类型能够准确反映处理结果。要求在函数定义中合理运用泛型,以保证函数的通用性。请详细阐述实现思路并编写完整代码。
33.1万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试

实现思路

  1. 定义联合接口:用于描述数组中可能出现的多种数据类型。
  2. 使用泛型:通过泛型来处理不同类型的数组元素,保证函数的通用性。
  3. 类型判断与处理:在函数内部通过 typeof 等方式判断元素类型,并进行相应的处理。
  4. 准确返回值类型推导:根据处理逻辑,确保返回值类型能准确反映处理结果。

代码实现

// 定义联合接口
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 属性来决定对元素的处理逻辑,最后返回经过处理的结果数组,类型也根据处理逻辑准确推导。