PassFront
  1. PassFront
  2. База знаний
  3. Продвинутые темы

Что такое Keyof?

Продвинутые темы

`keyof` — оператор TypeScript, который возвращает union-тип из всех ключей объектного типа. Он нужен для типобезопасной работы со свойствами.

Что делает

interface User {
  id: number;
  name: string;
  email: string;
}

type UserKeys = keyof User; // 'id' | 'name' | 'email'

keyof создаёт union строковых литералов — все имена свойств типа.

Основное применение — типобезопасный доступ

function getProp<T, K extends keyof T>(obj: T, key: K): T[K] {
  return obj[key];
}

const user: User = { id: 1, name: 'Ann', email: 'a@b.com' };
getProp(user, 'name'); // тип string
getProp(user, 'age');  // ошибка компиляции — нет такого ключа

T[K] — indexed access type: тип значения по ключу.

Комбинации

  • С mapped types:
type Optional<T> = { [K in keyof T]?: T[K] };
  • С typeof:
const config = { host: 'localhost', port: 3000 };
type ConfigKey = keyof typeof config; // 'host' | 'port'

Коротко для собеседования

keyof T возвращает union всех ключей типа (keyof User → 'id' | 'name' | 'email'). Используется для типобезопасного доступа к свойствам (K extends keyof T, T[K]) и в mapped types. Часто вместе с typeof.

Другие вопросы раздела