TypeScript, расширение JavaScript, привносит в язык статическую типизацию, предоставляя разработчикам мощные инструменты для выявления ошибок на ранних этапах процесса разработки. Одной из примечательных особенностей TypeScript является возможность переключения между различными типами. В этой статье мы углубимся в несколько методов переключения типов в TypeScript, сопровождая их примерами кода. Давайте раскроем потенциал переключения типов и расширим наши навыки разработки TypeScript!
Методы переключения типов в TypeScript:
- Оператор typeof:
Оператор typeof позволяет определить тип переменной во время выполнения. Он возвращает строку, представляющую тип переменной.
function getType(value: unknown): string {
return typeof value;
}
const str = "Hello, TypeScript!";
const num = 42;
console.log(getType(str)); // Output: string
console.log(getType(num)); // Output: number
- Оператор экземпляра:
Оператор экземпляра проверяет, является ли объект экземпляром определенного класса или интерфейса.
class Person {
name: string;
constructor(name: string) {
this.name = name;
}
}
const person = new Person("John");
console.log(person instanceof Person); // Output: true
console.log(person instanceof Object); // Output: true
- Защита типа.
Защита типа — это условный оператор, который помогает сузить тип переменной в определенном блоке кода.
function processValue(value: string | number) {
if (typeof value === "string") {
console.log("Processing string:", value.toUpperCase());
} else {
console.log("Processing number:", value.toFixed(2));
}
}
processValue("typescript"); // Output: Processing string: TYPESCRIPT
processValue(3.14159); // Output: Processing number: 3.14
- Размеченные объединения.
Различные объединения, также известные как теговые объединения или алгебраические типы данных, позволяют объединить несколько типов в один тип.
interface Square {
kind: "square";
size: number;
}
interface Circle {
kind: "circle";
radius: number;
}
type Shape = Square | Circle;
function calculateArea(shape: Shape): number {
switch (shape.kind) {
case "square":
return shape.size * shape.size;
case "circle":
return Math.PI * shape.radius 2;
}
}
const square: Shape = { kind: "square", size: 5 };
const circle: Shape = { kind: "circle", radius: 3 };
console.log(calculateArea(square)); // Output: 25
console.log(calculateArea(circle)); // Output: 28.27
Переключение типов в TypeScript повышает гибкость и надежность нашего кода. Используя такие методы, как оператор typeof, оператор экземпляра, средства защиты типов и дискриминируемые объединения, мы можем эффективно обрабатывать различные типы. Понимание этих методов дает нам возможность писать более чистый, безопасный и удобный в сопровождении код TypeScript.