Напиши тип 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 ошибок.