PassFront
  1. PassFront
  2. База знаний
  3. Utility Types

Как работают Record, ReturnType, Parameters и Awaited?

Utility Types

Эти utility-типы строят тип по данным о другом типе или функции.

Record

Создаёт объект с заданным типом ключей и значений:

type Role = 'admin' | 'user';
const permissions: Record<Role, string[]> = {
  admin: ['read', 'write'],
  user: ['read'],
};

Если пропустить ключ из Role, TypeScript выдаст ошибку.

ReturnType и Parameters

function createUser(name: string, age: number) {
  return { id: 1, name, age };
}

type Created = ReturnType<typeof createUser>;   // { id: number; name: string; age: number }
type Args = Parameters<typeof createUser>;      // [name: string, age: number]

Удобно, когда тип выводится из реализации и не нужно дублировать его вручную.

Awaited

Достаёт тип значения из промиса, в том числе вложенного:

type Data = Awaited<ReturnType<typeof fetchUser>>; // тип пользователя, а не Promise

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

Record задаёт словарь, ReturnType и Parameters извлекают типы из функций, Awaited разворачивает промис.

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