TSLint работает с разобранным AST (абстрактным синтаксическим деревом), полученным из TypeScript.Если AST, который он получает от TypeScript, имеет ошибки, логика его правил может сделать некоторые неверные предположения.
Определение нескольких из этих терминов:
- AST: древовидное представление вашего кода, которое будет анализировать линтер.Вы можете поиграть с astexplorer.net , чтобы увидеть, как это выглядит;это довольно изящно!100
- Синтаксические ошибки: если вы пишете такой код, как
led foo = "bar";
(led
вместо let
) .TypeScript создаст другое представление вашего кода, чем вы могли бы ожидать. - Семантические ошибки: если вы пишете код, в котором нет синтаксических ошибок, но при проверке типов обнаруживаются проблемы, например
let foo: number = "bar";
.
В TSLint есть проблема, открывающая вопрос о том, не стоит ли проверять код с синтаксическими или семантическими ошибками: https://github.com/palantir/tslint/issues/3808
Два дополнительных замечания в пользу того, чтобы TSLint не запускался на недопустимых исходных файлах:
- Многим людям трудно различить ошибки TS и TSLint, поэтому может возникнуть путаница, когда неправильный файл приводит к lot ошибок lint
- Код TS, который не компилируется, имеет тенденцию иметь различные проблемы с линтированием после того, как он будет исправлен, поэтому немного напрасно просить людей исправить их вместе с ошибками TS