Как получить тип ключей (`keyof`) и тип значений (`T[keyof T]`) объекта?
СобеседованиеПродвинутые типыСистема типов
- Ключи:
keyof T — union строковых/числовых/символьных литералов
- Ключи у значения:
keyof typeof obj
- Значения:
T[keyof T] — union типов всех значений
- Индексный доступ:
type Age = Person["age"]
- Элемент массива:
T[number] — тип элемента массива/кортежа
- Строковая индексная сигнатура даёт
string | number для keyof (JS приводит числовые ключи к строкам)
symbol появляется в keyof только при явной [key: symbol] сигнатуре