Выбор ответа Senior Условные и mapped-типы обновлено
Mapped-тип над кортежем
Вопрос
Какой тип у T2?
type Box<V> = { value: V };
type Boxed<T> = { [K in keyof T]: Box<T[K]> };
type T2 = Boxed<[string, number]>;
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: [Box<string, Box<number]. Гомоморфный mapped-тип, применённый к массиву или кортежу, возвращает массив или кортеж той же формы: преобразуются только элементы.
Варианты ответа
{ 0: Box<string>; 1: Box<number>; length: Box<2> }[Box<string>, Box<number>]правильный ответBox<string | number>[]Box<[string, number]>
Разбор
Гомоморфный mapped-тип, применённый к массиву или кортежу, возвращает массив или кортеж той же формы: преобразуются только элементы. Получается [Box<string>, Box<number>].
Объект с ключами 0, 1 и length ждут те, кто думает, что mapped-тип обходит кортеж как обычный объект, но для гомоморфного mapped-типа над массивом это не так. Объединение и обёртка целиком не соответствуют поэлементному преобразованию.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.