Какие ошибки можно отловить на этапе компиляции в TypeScript?
TypeScript был создан именно для того, чтобы находить ошибки еще до выполнения программы. Это дает разработчику возможность быстрее выявлять логические несоответствия, избегать багов на продакшене и улучшать качество кода. На этапе компиляции tsc проверяет проект на соответствие правилам типизации и различным настройкам конфигурации.
Ошибки несоответствия типов
Одна из самых частых категорий — это ошибки при несоответствии типов. Например, попытка присвоить переменной типа number строковое значение или вызвать метод, не существующий у объекта определенного типа. Такие ошибки помогают сразу выявить несостыковки в логике программы.
Использование необъявленных свойств
Если обратиться к свойству, которого нет в объекте, TypeScript на этапе компиляции сообщит об ошибке. Это защищает от опечаток и неправильного представления структуры объекта.
Ошибки при вызове функций
TypeScript проверяет количество и типы аргументов, передаваемых в функции. Если передан лишний параметр или отсутствует обязательный, компилятор это заметит. Также проверяется корректность возвращаемого значения относительно заявленного типа.
Нарушение ограничений дженериков
Когда используются обобщенные типы с ограничениями (extends), компилятор проверяет, что переданный параметр соответствует указанному условию. Если ограничение нарушено, TypeScript отлавливает это еще до выполнения.
Конфликты с модификаторами доступа
В классах ошибки возникают при попытке обратиться к private или protected свойствам и методам извне. Также можно поймать ошибки при несоблюдении правил реализации интерфейсов и абстрактных классов.
Несоответствие интерфейсам
Если класс или объект не реализует все обязательные поля интерфейса, либо реализует их с неверными типами, компилятор укажет на это. Это особенно полезно при работе с большими структурами данных и контрактами между модулями.
Ошибки при использовании null и undefined
При включенной опции strictNullChecks компилятор предотвращает присвоение null или undefined переменным, которые их не допускают. Это снижает количество багов, связанных с неожиданными пустыми значениями.
Ошибки в перегрузках функций
Если сигнатуры перегруженных функций противоречат друг другу или реализация не соответствует хотя бы одной из сигнатур, TypeScript выдаст ошибку.
Нарушение правил модулей и импортов
TypeScript фиксирует ошибки при импорте несуществующих сущностей, а также при экспорте конфликтующих имен. Это помогает сохранять корректность структуры проекта.
Ошибки конфигурации tsconfig.json
Некоторые ошибки связаны с параметрами компиляции. Например, попытка использовать современные возможности языка при слишком старом уровне target, или несоответствие между путями, прописанными в paths, и реальной структурой файлов.