Объединенные типы в TypeScript предоставляют мощный механизм определения переменных, которые могут содержать значения нескольких типов. Эта функция повышает безопасность типов и гибкость вашего кода. В этой статье мы рассмотрим различные методы и приемы работы с типами объединения в TypeScript, сопровождаемые примерами кода.
- Защита типа.
Защита типа — это условный оператор, позволяющий сузить возможные типы переменной в определенном блоке кода. Вы можете использовать защиту типа для выполнения различных операций в зависимости от фактического типа значения. Вот пример:
function processValue(value: string | number) {
if (typeof value === 'string') {
// Process string value
console.log(value.toUpperCase());
} else {
// Process numeric value
console.log(value * 2);
}
}
processValue("Hello"); // Output: HELLO
processValue(5); // Output: 10
- Утверждение типа.
Утверждения типа позволяют явно информировать компилятор TypeScript о типе переменной, если вы знаете о ее типе больше, чем компилятор. Это полезно при работе с типами объединения, имеющими некоторые общие функции. Вот пример:
function processValue(value: string | number) {
const result = (value as string).toUpperCase();
console.log(result);
}
processValue("Hello"); // Output: HELLO
- Размеченные объединения:
Различные объединения — это типы объединений с общим свойством (известным как дискриминатор), которое позволяет TypeScript определять конкретный тип внутри объединения. Это упрощает обработку различных случаев с использованием операторов переключения. Вот пример:
interface Circle {
kind: "circle";
radius: number;
}
interface Rectangle {
kind: "rectangle";
width: number;
height: number;
}
type Shape = Circle | Rectangle;
function calculateArea(shape: Shape) {
switch (shape.kind) {
case "circle":
return Math.PI * shape.radius 2;
case "rectangle":
return shape.width * shape.height;
}
}
const circle: Circle = { kind: "circle", radius: 5 };
const rectangle: Rectangle = { kind: "rectangle", width: 10, height: 20 };
console.log(calculateArea(circle)); // Output: 78.53981633974483
console.log(calculateArea(rectangle)); // Output: 200
- Псевдонимы типов.
Псевдонимы типов позволяют создавать собственные имена для типов объединения, что делает ваш код более читабельным и удобным в сопровождении. Вот пример:
type ID = string | number;
function processID(id: ID) {
console.log(`Processing ID: ${id}`);
}
processID(123); // Output: Processing ID: 123
processID("abc"); // Output: Processing ID: abc
Объединенные типы в TypeScript предоставляют мощный способ обработки переменных, которые могут содержать значения нескольких типов. Используя средства защиты типов, утверждения типов, распознаваемые объединения и псевдонимы типов, вы можете эффективно работать с типами объединений и повысить безопасность типов в своей кодовой базе. Понимание и применение этих методов поможет вам писать более надежный и удобный в обслуживании код TypeScript.