Чем interface отличается от type в TypeScript и что такое утилитарные типы?
- Что делают Partial, Pick, Omit, Record?
Оба описывают форму объекта. interface — расширяется через extends и сливается при повторном объявлении (удобно для расширения чужих типов). type — умеет больше: объединения, пересечения, кортежи, условные и сопоставленные типы. Утилиты строят новые типы из существующих: Partial (всё необязательно), Required, Pick, Omit, Record, ReturnType.
- Для объектов и публичных API часто выбирают interface, для остального — type
- Дженерики: function first<T>(xs: T[]): T
- keyof и индексные типы — основа утилит
А ещё Главное — единообразие в проекте
Подробно
Слияние объявлений. Два interface Window { ... } объединятся — так библиотеки добавляют поля в глобальные типы. Для type повторное объявление — ошибка.
Что умеет только type: объединения (A | B), примитивные псевдонимы, кортежи, условные типы (T extends U ? X : Y), шаблонные строковые типы.
Утилитарные типы реализованы через сопоставленные типы: Partial<T> = { [K in keyof T]?: T[K] }. Они избавляют от дублирования: тип формы редактирования выводится из модели, а не пишется заново.
Пример
interface User { id: number; name: string; email: string; }
type UserPatch = Partial<Omit<User, "id">>; // всё, кроме id, необязательно
type UserPreview = Pick<User, "id" | "name">;
type ById = Record<number, User>;
type Status = "draft" | "published"; // только type
function update<T extends { id: number }>(item: T, patch: Partial<T>): T {
return { ...item, ...patch };
}Что хотят услышать
- Сходства и различия interface и type.
- Основные утилитарные типы.
- Дженерики.
Проверьте себя
Один верный вариант. Подумайте, потом откройте ответ.
Показать варианты и ответ
- ✗type умеет сливаться при повторном объявлении, а interface — нет
- ✗interface поддерживает объединения типов через |, а type — только объекты
- ✓interface расширяется и сливается; type — объединения и условные типы; Partial, Pick, Omit
- ✗Partial делает все поля обязательными
Связанные вопросы
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.