Чем отличаются типы в TypeScript и как это влияет на код?
Основы TypeScript
В TypeScript есть примитивы, объектные типы и составные типы — от выбора зависит, что компилятор разрешит и проверит.
Виды типов
- Примитивы:
string,number,boolean,bigint,symbol,null,undefined. - Литеральные типы:
'ok',42,true— конкретные значения. - Объектные: интерфейсы,
typeс полями, массивыT[], кортежи[string, number], функции. - Объединения и пересечения:
A | B,A & B. - Особые:
any,unknown,never,void. - Вычисляемые: дженерики,
keyof, условные и mapped-типы.
Как это влияет на код
type Status = 'idle' | 'loading' | 'error'; // вместо string — опечатки невозможны
type Point = readonly [number, number]; // кортеж фиксированной длины, без мутаций
function parse(input: unknown) { /* обязаны проверить */ }- узкие типы (литералы, объединения) ловят больше ошибок;
unknownзаставляет проверять данные,any— отключает проверки;readonlyи кортежи фиксируют структуру.
Коротко для собеседования
Примитивы, литералы, объектные, объединения и пересечения, any/unknown/never/void и вычисляемые типы; чем точнее тип, тем больше ошибок ловит компилятор.
Подробнее: TypeScript Handbook — Everyday Types