Включение типов объектов в TypeScript: подробное руководство

В TypeScript оператор switch — мощный инструмент для обработки условной логики. Хотя операторы переключения обычно используются с примитивными типами данных, их также можно использовать для обработки различных типов объектов. В этой статье будут рассмотрены различные методы включения типов объектов в TypeScript, а также приведены примеры кода и пояснения.

Метод 1: использование оператора typeof
Оператор typeofпозволяет определить тип переменной во время выполнения. Используя этот оператор в операторе переключения, вы можете выполнять различные действия в зависимости от типа объекта.

function handleObject(obj: any) {
  switch (typeof obj) {
    case 'string':
      console.log('String type');
      break;
    case 'number':
      console.log('Number type');
      break;
    case 'boolean':
      console.log('Boolean type');
      break;
    default:
      console.log('Unknown type');
  }
}

Метод 2: использование защиты типа
Защита типа — это функции или выражения, которые сужают тип объекта внутри условного блока. Они особенно полезны при работе со сложными типами объектов. Вот пример:

interface Circle {
  kind: 'circle';
  radius: number;
}
interface Square {
  kind: 'square';
  sideLength: number;
}
type Shape = Circle | Square;
function calculateArea(shape: Shape) {
  switch (shape.kind) {
    case 'circle':
      const circleArea = Math.PI * shape.radius * shape.radius;
      console.log(`Circle area: ${circleArea}`);
      break;
    case 'square':
      const squareArea = shape.sideLength * shape.sideLength;
      console.log(`Square area: ${squareArea}`);
      break;
    default:
      console.log('Unknown shape');
  }
}

Метод 3: Размеченные объединения
Различные объединения используют общее свойство, известное как дискриминатор, для различения типов объектов. Такой подход обеспечивает безопасность типов и упрощает переключение типов объектов.

interface Car {
  type: 'car';
  brand: string;
  model: string;
}
interface Bike {
  type: 'bike';
  brand: string;
  gears: number;
}
type Vehicle = Car | Bike;
function printVehicleInfo(vehicle: Vehicle) {
  switch (vehicle.type) {
    case 'car':
      console.log(`Car: ${vehicle.brand} ${vehicle.model}`);
      break;
    case 'bike':
      console.log(`Bike: ${vehicle.brand}, ${vehicle.gears} gears`);
      break;
    default:
      console.log('Unknown vehicle type');
  }
}

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