MST

星途 面试题库

面试题:TypeScript类型推断在复杂嵌套结构中的应用

假设有一个复杂的嵌套对象结构,例如:`interface Outer { inner: { subInner: { value: string | number }[] }[] }`。编写一个函数,该函数接受这样的`Outer`类型对象,并且根据`subInner`数组中元素的`value`类型,对其进行不同的操作(例如,字符串转大写,数字求平方根),最后返回处理后的对象。要求在整个过程中合理利用TypeScript的类型推断,确保类型安全且代码简洁高效。
43.5万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
interface Outer {
    inner: { subInner: { value: string | number }[] }[];
}

function processObject(obj: Outer): Outer {
    return {
        inner: obj.inner.map(inner => ({
            subInner: inner.subInner.map(subInner => {
                if (typeof subInner.value ==='string') {
                    return { value: subInner.value.toUpperCase() };
                } else {
                    return { value: Math.sqrt(subInner.value) };
                }
            })
        }))
    };
}

在上述代码中:

  1. 首先定义了Outer接口,与题目中的类型定义一致。
  2. processObject函数接受一个Outer类型的对象obj
  3. 使用map方法遍历obj.inner数组,对每个inner对象中的subInner数组再次使用map方法遍历。
  4. 在遍历subInner数组时,通过typeof判断value的类型,对字符串类型调用toUpperCase方法转大写,对数字类型调用Math.sqrt方法求平方根。
  5. 最后返回处理后的对象,整个过程利用了TypeScript的类型推断,确保了类型安全。