Код Middle Дженерики обновлено

zip с выводом типа кортежа

Условие

Напиши zip для любого числа массивов: zip([1, 2], ['a', 'b'], [true, false]) возвращает [[1, 'a', true], [2, 'b', false]] с типом [number, string, boolean][]. Длина результата равна длине самого короткого массива; без аргументов пустой массив.

Тип: параметр T extends unknown[] описывает типы элементов, а аргументы задаются mapped-типом по кортежу.

Примеры

zip([1, 2], ["a", "b"], [true, false]) // [[1, "a", true], [2, "b", false]]
zip([1, 2, 3], ["x"]) // [[1, "x"]]
zip() // []

Как подойти

Подсказки: 2
  1. Mapped-тип по кортежу { [I in keyof T]: ... } даёт кортеж той же длины.
  2. Внутри функции приведи аргументы к readonly unknown[][]: обобщённый mapped-тип компилятор не умеет обходить.

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.

Термины по теме