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.