Когда использовать type в TypeScript?
Типы и интерфейсы
`type` используют там, где нужен тип, отличный от простой формы объекта, или вычисляемый тип.
Когда нужен type
- Объединения:
type Status = 'idle' | 'loading' | 'success' | 'error';
type Result = { ok: true; data: User } | { ok: false; error: string };- Кортежи:
type Point = [x: number, y: number]. - Типы функций:
type Handler = (event: MouseEvent) => void. - Вычисляемые типы:
type UserKeys = keyof User;
type ReadonlyUser = Readonly<User>;
type Getters<T> = { [K in keyof T as `get${Capitalize<string & K>}`]: () => T[K] };- Псевдонимы для примитивов и сложных выражений:
type Id = string. - Пересечения:
type AdminUser = User & { role: 'admin' }.
Когда можно interface
Для простых объектных форм подходят оба — тут решает договорённость в команде.
Коротко для собеседования
type — для объединений, кортежей, типов функций, вычисляемых и mapped-типов и пересечений; для простых объектов подходит и interface.
Подробнее: TypeScript Handbook — Type Aliases