热搜:前端 nest neovim nvim

分享一道不错的TS面试题(含3层),看看能答到第几层!

lxf2023-05-26 13:30:01

分享一道不错的TS面试题(含3层),看看能答到第几层!

最近遇到了一个不错的 TS 面试题,分享。

这道题有 3 每一个层次,我们一层一层地看。

第一层的要求如下:

实现一个 zip 函数,两个数组的元素按顺序合并,如输入 [1,2,3], [4,5,6] 时,返回 [[1,4], [2,5],[3,6]

这一层是每次从两个数组中取一个元素,合并后放入数组,然后继续处理下一个,递归到这个过程中,直到数组为空。

function zip(target, source) {
  if (!target.length || !source.length) return [];

  const [one, ...rest1] = target;
  const [other, ...rest2] = source;

  return [[one, other], ...zip(rest1, 第二);
}

结果是对的:

分享一道不错的TS面试题(含3层),看看能答到第几层!

第一层比较简单,然后我们来看看第二层的要求:

给这个 zip 函数定义 ts 类型(两种写法)

函数有两种定义形式:

直接通过 function 声明函数:

function func() {}

并声明匿名函数,然后赋值变量:

const func = () =