В 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.