Изучение TypeScript: расширение нескольких типов

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

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

type Person = {
  name: string;
};
type Employee = {
  employeeId: number;
};
type Manager = Person & Employee;
const manager: Manager = {
  name: "John Doe",
  employeeId: 12345,
};

В приведенном выше примере мы определяем три типа: Person, Employeeи Manager. Тип Managerрасширяет как Person, так и Employeeс помощью оператора типа пересечения &. Это позволяет нам создать объект manager, имеющий свойства обоих типов.

Метод 2: типы объединения
Типы объединения, обозначаемые оператором |, позволяют переменной иметь более одного типа. Мы можем расширить несколько типов, используя типы объединения, объединяя их вместе. Вот пример:

type Square = {
  sideLength: number;
};
type Circle = {
  radius: number;
};
type SquareOrCircle = Square | Circle;
function getArea(shape: SquareOrCircle): number {
  if ("sideLength" in shape) {
    return shape.sideLength  2;
  } else {
    return Math.PI * shape.radius  2;
  }
}
const square: Square = {
  sideLength: 5,
};
console.log(getArea(square)); // Output: 25

В приведенном выше примере мы определяем два типа: Squareи Circle. Затем мы создаем тип объединения SquareOrCircle, объединяя их с помощью оператора |. Функция getAreaпринимает параметр типа SquareOrCircleи проверяет наличие свойства sideLength, чтобы определить, является ли фигура квадратом или кругом. Это позволяет нам выполнять операции с конкретным типом на основе формы, переданной функции.

Метод 3: объединение типов
TypeScript позволяет нам объединять несколько типов с одинаковым именем в одно объявление типа. Это может быть полезно при работе со сторонними библиотеками или при расширении существующих типов. Вот пример:

type User = {
  id: string;
  name: string;
};
type User = {
  age: number;
};
const user: User = {
  id: "123",
  name: "John Doe",
  age: 25,
};

В приведенном выше примере мы определяем тип Userдважды. TypeScript автоматически объединяет два объявления типов в один тип, объединяя все свойства. Это позволяет нам создать объект user, имеющий свойства из обоих объявлений типов.

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