MST

星途 面试题库

面试题:TypeScript交叉类型在复杂对象的深度嵌套与类型保护中的应用

假设有如下复杂对象结构,外层对象`Outer`有属性`data: Inner[]`,`Inner`对象有属性`type: 'A' | 'B'`,当`type`为`'A'`时,对象有额外属性`valueA: string`,当`type`为`'B'`时,对象有额外属性`valueB: number`。请使用交叉类型和类型保护机制,编写一个函数`processOuter`,该函数接收`Outer`类型对象,遍历`data`数组,根据`type`的值正确处理`valueA`或`valueB`,并返回处理结果的数组。处理`valueA`时返回其长度,处理`valueB`时返回其平方值。
47.2万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
interface InnerA {
    type: 'A';
    valueA: string;
}

interface InnerB {
    type: 'B';
    valueB: number;
}

type Inner = InnerA | InnerB;

interface Outer {
    data: Inner[];
}

function processOuter(outer: Outer): number[] {
    return outer.data.map(item => {
        if (item.type === 'A') {
            return item.valueA.length;
        } else {
            return item.valueB * item.valueB;
        }
    });
}