TypeScript расширяет JavaScript, добавляя строгую типизацию, что делает код более предсказуемым и поддерживаемым. В этой статье рассмотрим основные концепции: типы, интерфейсы и обобщения (generics).
1. Типы в TypeScript
Основные типы
1. **Примитивные типы**: - `number`: Числа. - `string`: Строки. - `boolean`: Логические значения. - `null` и `undefined`.Пример
typescript
let age: number = 30;
let name: string = "John";
let isActive: boolean = true;
-
Массивы:
- Используйте
type[]
илиArray<type>
.
Пример
typescriptlet numbers: number[] = [1, 2, 3]; let strings: Array<string> = ["a", "b", "c"];
- Используйте
-
Кортежи (Tuple):
- Фиксированное количество элементов разного типа.
Пример
typescriptlet tuple: [string, number] = ["Alice", 25];
-
Тип
any
:- Может содержать значения любого типа. Рекомендуется использовать осторожно.
Пример
typescriptlet variable: any = "Hello"; variable = 42;
-
Тип
unknown
:- Более безопасная альтернатива
any
, требует проверки типа перед использованием.
Пример
typescriptlet value: unknown = "Hello"; if (typeof value === "string") { console.log(value.toUpperCase()); }
- Более безопасная альтернатива
2. Интерфейсы
Что такое интерфейсы?
Интерфейсы определяют структуру объекта. Они помогают описывать форму данных и проверять их на этапе компиляции.Объявление интерфейсов
Пример
```typescript interface User { id: number; name: string; email?: string; // необязательное свойство }const user: User = { id: 1, name: "Alice", };
text
<h3 id="интерфейсы-для-функций">Интерфейсы для функций</h3>
Интерфейсы также могут описывать функции.
<h4 id="пример">Пример</h4>
```typescript
interface AddFunction {
(a: number, b: number): number;
}
const add: AddFunction = (x, y) => x + y;
Наследование интерфейсов
Интерфейсы можно расширять, чтобы описывать более сложные структуры.Пример
```typescript interface Person { name: string; }interface Employee extends Person { employeeId: number; }
const employee: Employee = { name: "John", employeeId: 123, };
text
---
<h2 id="3-generics-обобщения">3. Generics (Обобщения)</h2>
<h3 id="что-такое-generics">Что такое generics?</h3>
Generics позволяют создавать компоненты, которые работают с разными типами данных, сохраняя строгую типизацию.
<h3 id="пример-с-функцией">Пример с функцией</h3>
```typescript
function identity<T>(value: T): T {
return value;
}
console.log(identity<number>(42)); // 42
console.log(identity<string>("Hello")); // Hello
Generics в интерфейсах
Интерфейсы могут быть обобщёнными.Пример
```typescript interface Boxconst stringBox: Box
text
<h3 id="ограничения-типов-type-constraints">Ограничения типов (Type Constraints)</h3>
Generics можно ограничивать определённым типом.
<h4 id="пример">Пример</h4>
```typescript
function getLength<T extends { length: number }>(value: T): number {
return value.length;
}
console.log(getLength("Hello")); // 5
console.log(getLength([1, 2, 3])); // 3
Итоговые вопросы для подготовки
- Чем отличаются типы
any
иunknown
? - Как объявить интерфейс с необязательными свойствами?
- В чём преимущества использования generics?
- Как использовать ограничения типов в generics?
- Какие преимущества даёт использование интерфейсов?
Совет: Практикуйтесь с типами, интерфейсами и generics в небольших проектах, чтобы лучше понять их особенности и научиться эффективно применять в реальной разработке.