Код 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
- Mapped-тип по кортежу
{ [I in keyof T]: ... }даёт кортеж той же длины. - Внутри функции приведи аргументы к
readonly unknown[][]: обобщённый mapped-тип компилятор не умеет обходить.
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.
Предыдущий вопрос
retry, возвращающий Result вместо исключения
Следующий вопрос
strictFunctionTypes: методы и свойства-функции