Весной стартует сезон найма, успей отхватить свой оффер!

Utility Type Parameters в TypeScript

Parameters — это утилитный тип в TypeScript, который позволяет узнать, какие типы параметров у функции. Он превращает список аргументов функции в кортеж и помогает избежать дублирования кода.


Синтаксис

Parameters<T>
  • T — тип функции, параметры которой вы хотите извлечь.
  • Результат — массив (кортеж) с типами всех параметров.

Пример использования

Пример 1. Извлечение типов параметров функции

function add(a: number, b: number): number {
  return a + b;
}

type AddParameters = Parameters<typeof add>;
// AddParameters имеет тип: [number, number]

В этом примере:

  • Функция add принимает два параметра типа number.
  • Parameters<typeof add> извлекает типы этих параметров в виде кортежа [number, number].

Пример 2. Использование извлечённых типов в другой функции

function multiply(a: number, b: number): number {
  return a * b;
}

function processOperation(...args: Parameters<typeof multiply>): number {
  // Здесь args имеет тип [number, number]
  return multiply(...args);
}

const result = processOperation(2, 3); // Результат: 6
  • Функция processOperation использует ...args с типом [number, number], извлечённым из функции multiply.
  • Это обеспечивает согласованность типов и уменьшает дублирование кода.

Зачем использовать Parameters?

  1. Повторное использование типов: Избегает необходимости вручную объявлять типы параметров, что особенно полезно для функций с большим числом аргументов.
  2. Поддержка согласованности: Если сигнатура функции меняется, типы, извлечённые через Parameters, автоматически обновятся.
  3. Удобство для обёрток: Позволяет создавать обёртки вокруг функций, сохраняя точное соответствие типов входных параметров.

Ограничения

  • Overload функции: Если функция имеет несколько перегрузок, Parameters возьмёт типы из самой первой сигнатуры, что может не всегда соответствовать ожиданиям.
  • Generic функции: При работе с generic-функциями может потребоваться дополнительная спецификация типов для корректного извлечения параметров.

Итог

Parameters — мощный утилитный тип, позволяющий извлечь типы параметров функции в виде кортежа. Это способствует более строгой типизации, снижает дублирование и улучшает поддержку кода, особенно в случаях, когда функции используются в различных обёртках и утилитах.