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.