面试题答案
一键面试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) };
}
})
}))
};
}
在上述代码中:
- 首先定义了
Outer
接口,与题目中的类型定义一致。 processObject
函数接受一个Outer
类型的对象obj
。- 使用
map
方法遍历obj.inner
数组,对每个inner
对象中的subInner
数组再次使用map
方法遍历。 - 在遍历
subInner
数组时,通过typeof
判断value
的类型,对字符串类型调用toUpperCase
方法转大写,对数字类型调用Math.sqrt
方法求平方根。 - 最后返回处理后的对象,整个过程利用了TypeScript的类型推断,确保了类型安全。