Ответ
Плюсы:
- Интерфейсы поддерживают объединение (merging) – можно расширять их в разных местах кода
- Более легковесные, не участвуют в рантайме
- Лучше работают с объектами и классами (implements)
- Удобны для описания формы данных (DTO, API-ответы)
Минусы:
- Нет дефолтных значений
- Нельзя использовать примитивы (type alias может)
- Сложнее описывать сложные типы (условные, mapped types)
- Нет intersection (&) и union (|)
Пример:
interface User {
id: number;
name: string;
}
// Расширение интерфейса
interface Admin extends User {
role: string;
}
// vs type
type UserType = {
id: number;
name: string;
}