Напиши тип Middle Условные и mapped-типы обновлено
Только строковые ключи через Extract
Вопрос
Какой тип получится? Впишите тип.
type T = { a: 1; 0: 2; [Symbol.iterator]: 3 };
type K = Extract<keyof T, string>; // /* ? */
Попробуйте сами
Напишите тип, как написали бы в коде.
Показать ответ и разбор
Коротко
Правильный тип: 'a'. keyof возвращает string number symbol ключи: здесь 'a' 0 typeof Symbol.iterator.
Правильный тип
'a'
Разбор
keyof возвращает string | number | symbol ключи: здесь 'a' | 0 | typeof Symbol.iterator. Extract<..., string> оставляет только строковые. Это нужно, когда ключи идут в шаблонный литеральный тип: `get${K}` с символом не построить.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Предыдущий вопрос
Распределительный условный тип от never
Следующий вопрос
infer последнего элемента кортежа