Демистифицируем TypeScript: понимание полных сигнатур вызовов с помощью примеров кода

В TypeScript сигнатуры вызовов играют жизненно важную роль в определении типов и параметров функций. Понимая полные сигнатуры вызовов, разработчики могут писать более надежный и типобезопасный код. В этой статье мы рассмотрим различные методы использования полных сигнатур вызовов в TypeScript, сопровождаемые примерами кода.

  1. Базовая сигнатура вызова:
    Базовая сигнатура вызова определяет параметры и тип возвращаемого значения функции. Вот пример:
type AddFunction = (a: number, b: number) => number;
const add: AddFunction = (a, b) => a + b;
console.log(add(2, 3)); // Output: 5
  1. Дополнительные параметры.
    Вы можете определить дополнительные параметры в сигнатуре вызова, используя символ ?. Вот пример:
type GreetingFunction = (name: string, age?: number) => string;
const greet: GreetingFunction = (name, age) => {
  if (age) {
    return `Hello ${name}, you are ${age} years old.`;
  } else {
    return `Hello ${name}.`;
  }
};
console.log(greet("John")); // Output: Hello John.
console.log(greet("Jane", 25)); // Output: Hello Jane, you are 25 years old.
  1. Остальные параметры:
    Вы можете использовать остальные параметры, чтобы указать переменное количество аргументов в сигнатуре вызова. Вот пример:
type SumFunction = (...numbers: number[]) => number;
const sum: SumFunction = (...numbers) => numbers.reduce((acc, curr) => acc + curr, 0);
console.log(sum(1, 2, 3)); // Output: 6
console.log(sum(4, 5, 6, 7)); // Output: 22
  1. Перегрузка функций.
    TypeScript позволяет определять несколько сигнатур вызовов для одной функции с помощью перегрузки функций. Вот пример:
function formatDate(date: Date): string;
function formatDate(date: string): string;
function formatDate(date: Date | string): string {
  if (typeof date === "string") {
    date = new Date(date);
  }
  return date.toISOString();
}
console.log(formatDate(new Date())); // Output: Current date in ISO format
console.log(formatDate("2022-01-01")); // Output: Date in ISO format

Понимание полных сигнатур вызовов в TypeScript имеет решающее значение для написания типобезопасного и удобного в обслуживании кода. В этой статье мы рассмотрели различные методы, включая базовые сигнатуры вызовов, необязательные параметры, остальные параметры и перегрузку функций. Используя эти методы, разработчики могут повысить свою производительность и создавать более надежные приложения TypeScript.