Выбор ответа Junior Условные и mapped-типы обновлено
Индекс number без as const
Вопрос
Какой тип у Role?
const roles = ['admin', 'user'];
type Role = (typeof roles)[number];
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: string. Без as const массив выводится как string[]: литералы расширяются, ведь массив изменяемый.
Варианты ответа
'admin' | 'user'stringправильный ответ['admin', 'user']string[]
Разбор
Без as const массив выводится как string[]: литералы расширяются, ведь массив изменяемый. Индекс [number] даёт тип элемента, то есть string.
'admin' | 'user' получится с const roles = ['admin', 'user'] as const, тогда тип массива readonly ['admin', 'user']. Кортеж и string[] это типы массива, а не элемента.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.