type это способ задать тип данных в TypeScript.
Если говорить просто, type позволяет дать имя любому типу: объекту, строке, числу, объединению типов и даже функции.
Начнём с самого базового примера:
name: string
isAdmin: boolean
}
Теперь этот тип можно использовать в любом месте кода:
```const user: User = {
name: 'Tigran',
isAdmin: false
}
По сути, type работает похоже на interface, когда речь идёт об объектах.
Но у type есть возможности, которых нет у interface.
1. Можно создавать объединения типов (union types)
type Status = 'loading' | 'success' | 'error'
Теперь переменная может принимать только одно из этих значений:
let status: Status
status = 'loading' // OK
status = 'done' // Ошибка
Это очень удобно для состояний, ролей, типов уведомлений и других фиксированных значений.
2. Можно объединять типы
type User = {
name: string
}
type Admin = {
permissions: string[]
}
type AdminUser = User & Admin
Здесь используется оператор & — он объединяет типы.
const admin: AdminUser = {
name: 'Tigran',
permissions: ['read', 'write']
}
3. Можно описывать примитивные типы
type ID = string | number
Теперь ID может быть строкой или числом:
let userId: ID
userId = 123
userId = 'abc-123'
4. Можно описывать функции
type Calculate = (a: number, b: number) => number
И использовать:
const sum: Calculate = (a, b) => {
return a + b
}
Когда использовать type:
• когда нужны union или intersection типы
• когда нужно дать имя примитивному типу
• когда описываешь сложные типы данных
• когда работаешь с утилитами типов (Partial, Pick, Omit и т.д.)
Важно понимать:
как и interface, type существует только во время разработки.
В итоговый JavaScript он не попадает.
Частый вопрос:
в чём разница между type и interface?
Коротко:
• interface лучше подходит для описания объектов и их расширения
• type более гибкий и подходит для сложных типов
На практике в большинстве проектов используют оба.
Для закрепления:
попробуй описать тип Theme, который может принимать только значения 'light' или 'dark'.
#ts
