Динамические типы возвращаемых данных в TypeScript: раскрываем возможности входной зависимости

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

Метод 1: типы объединения
Один из способов обработки динамических возвращаемых типов — использование типов объединения. Типы объединения позволяют определить несколько возможных типов возврата для функции на основе различных сценариев ввода. Давайте рассмотрим пример:

function getResult(input: string | number): string | number {
  if (typeof input === 'string') {
    return 'You passed a string!';
  } else {
    return Math.sqrt(input);
  }
}

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

function processInput(input: string): string;
function processInput(input: number): number;
function processInput(input: any): any {
  if (typeof input === 'string') {
    return input.toUpperCase();
  } else {
    return input * 2;
  }
}

Метод 3: утверждения типа
Утверждения типа позволяют явно указать тип возвращаемого значения функции. Этот подход полезен, когда у вас более сложная логика, которую невозможно легко уловить с помощью типов объединения или перегрузки функций. Вот пример:

function calculateResult(input: string | number): string | number {
  if (typeof input === 'string') {
    return input.length;
  } else {
    return Math.sqrt(input) as number;
  }
}

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