TypeScript — это строго типизированная расширенная версия JavaScript, которая добавляет в язык возможности статической типизации. Определяя типы, вы можете обнаружить ошибки на ранних этапах разработки и улучшить удобство сопровождения кода. В этой статье мы рассмотрим различные методы определения типов в TypeScript, включая аннотации типов, вывод типов, псевдонимы типов, интерфейсы, типы объединения, типы пересечений и защиту типов.
- Аннотации типов:
Аннотации типов явно указывают тип переменной, параметра или возвращаемого значения. Вот пример:
let age: number = 25;
function greet(name: string): string {
return `Hello, ${name}!`;
}
- Вывод типа.
Вывод типа позволяет TypeScript автоматически определять тип на основе присвоенного значения. Если аннотация типа не указана, TypeScript определяет тип. Например:
let age = 25; // age is inferred as number
const message = "Hello, TypeScript!"; // message is inferred as string
- Псевдонимы типов.
Псевдонимы типов позволяют создавать собственные типы и повторно использовать их в коде. Они предоставляют способ дать имя выражению типа. Вот пример:
type Point = {
x: number;
y: number;
};
const p: Point = { x: 10, y: 20 };
- Интерфейсы:
Интерфейсы определяют структуру объекта и могут использоваться для обеспечения соблюдения контрактов. Они описывают свойства, методы и сигнатуры, которые должен иметь объект. Вот пример:
interface Person {
name: string;
age: number;
greet(): void;
}
const person: Person = {
name: "John",
age: 30,
greet() {
console.log(`Hello, my name is ${this.name}.`);
},
};
- Типы объединения:
Типы объединения позволяют значению иметь несколько возможных типов. Они обозначаются символом вертикальной черты (|). Вот пример:
type Status = "success" | "error" | "loading";
function handleStatus(status: Status) {
// ...
}
- Типы пересечений.
Типы пересечений объединяют несколько типов в один. Они обозначаются символом амперсанда (&). Вот пример:
type Admin = {
name: string;
role: string;
};
type Employee = {
name: string;
id: number;
};
type AdminEmployee = Admin & Employee;
const adminEmployee: AdminEmployee = {
name: "John",
role: "Admin",
id: 12345,
};
- Защита типа:
Защита типа позволяет сузить тип значения внутри условного блока. Они полезны при работе с типами объединения. Вот пример:
function printId(id: number | string) {
if (typeof id === "number") {
console.log(`ID is a number: ${id}`);
} else {
console.log(`ID is a string: ${id}`);
}
}
TypeScript предоставляет различные методы для определения типов, что позволяет писать более безопасный и удобный в сопровождении код. Используя аннотации типов, вывод типов, псевдонимы типов, интерфейсы, типы объединения, типы пересечений и средства защиты типов, вы можете использовать возможности статической типизации TypeScript для раннего обнаружения ошибок и улучшения читаемости кода.