Какие ошибки можно отловить на этапе компиляции в TypeScript?

TypeScript был создан именно для того, чтобы находить ошибки еще до выполнения программы. Это дает разработчику возможность быстрее выявлять логические несоответствия, избегать багов на продакшене и улучшать качество кода. На этапе компиляции tsc проверяет проект на соответствие правилам типизации и различным настройкам конфигурации.

Ошибки несоответствия типов

Одна из самых частых категорий — это ошибки при несоответствии типов. Например, попытка присвоить переменной типа number строковое значение или вызвать метод, не существующий у объекта определенного типа. Такие ошибки помогают сразу выявить несостыковки в логике программы.

Использование необъявленных свойств

Если обратиться к свойству, которого нет в объекте, TypeScript на этапе компиляции сообщит об ошибке. Это защищает от опечаток и неправильного представления структуры объекта.

Ошибки при вызове функций

TypeScript проверяет количество и типы аргументов, передаваемых в функции. Если передан лишний параметр или отсутствует обязательный, компилятор это заметит. Также проверяется корректность возвращаемого значения относительно заявленного типа.

Нарушение ограничений дженериков

Когда используются обобщенные типы с ограничениями (extends), компилятор проверяет, что переданный параметр соответствует указанному условию. Если ограничение нарушено, TypeScript отлавливает это еще до выполнения.

Конфликты с модификаторами доступа

В классах ошибки возникают при попытке обратиться к private или protected свойствам и методам извне. Также можно поймать ошибки при несоблюдении правил реализации интерфейсов и абстрактных классов.

Несоответствие интерфейсам

Если класс или объект не реализует все обязательные поля интерфейса, либо реализует их с неверными типами, компилятор укажет на это. Это особенно полезно при работе с большими структурами данных и контрактами между модулями.

Ошибки при использовании null и undefined

При включенной опции strictNullChecks компилятор предотвращает присвоение null или undefined переменным, которые их не допускают. Это снижает количество багов, связанных с неожиданными пустыми значениями.

Ошибки в перегрузках функций

Если сигнатуры перегруженных функций противоречат друг другу или реализация не соответствует хотя бы одной из сигнатур, TypeScript выдаст ошибку.

Нарушение правил модулей и импортов

TypeScript фиксирует ошибки при импорте несуществующих сущностей, а также при экспорте конфликтующих имен. Это помогает сохранять корректность структуры проекта.

Ошибки конфигурации tsconfig.json

Некоторые ошибки связаны с параметрами компиляции. Например, попытка использовать современные возможности языка при слишком старом уровне target, или несоответствие между путями, прописанными в paths, и реальной структурой файлов.